के लिए सामग्री-प्रकार शीर्षलेख सेट करना मैं वेब सेवा बनाने के लिए rails-api मणि का उपयोग कर रहा हूं और आरएसपीसी के साथ अपने एपीआई का परीक्षण करना चाहता हूं। HTTP विधि के बावजूद मैं जो भी अनुरोध करता हूं, उसके पास CONTENT_TYPE
हैडर सेट "एप्लिकेशन/एक्स-www-form-urlencoded" के रूप में सेट है। यह वास्तव में एक समस्या है जब तक मैं अपने नियंत्रक में wrap_parameters उपयोग करने के लिए कोशिश करते हैं और यह नहीं है किसी भी पैरामीटर हैश पर कोई असर नहीं है:आरएसपीसी और रेल-एपीआई
class ApplicationController < ActionController::API
include ActionController::ParamsWrapper
end
class ProjectsController < ApplicationController
wrap_parameters :project, include: [:name]
# ...
end
This hack अब काम नहीं करता (@request नहीं के बराबर है), और अन्य में से कोई भी स्टैक ओवरफ़्लो पोस्ट मुझे या तो काम मिला।
अगर मैं अपने RSpec परीक्षा में निम्न अनुरोध करना:
put "/projects/1.json", {name: 'Updated Project 1'}
और मेरे नियंत्रक में एक डिबगर डाल मैं:
(rdb:1) p params
{ "name"=>"Updated Project 1",
"action"=>"update",
"controller"=>"projects",
"id"=>"5539bbd9-010c-4cfb-88d3-82dadbc99507",
"format"=>"json"
}
(rdb:1) p request.content_type
"application/x-www-form-urlencoded"
मैं के लिए कुछ इस तरह देखने की उम्मीद कर रहा हूँ पैरामीटर हैश (परियोजना प्रमुख के अलावा ध्यान दें):
{ "name"=>"Updated Project 1",
"action"=>"update",
"controller"=>"projects",
"id"=>"5539bbd9-010c-4cfb-88d3-82dadbc99507",
"format"=>"json",
"project" => {"name" => "Updated Project 1"}
}
यह है बस RSpec का उपयोग कर सामग्री प्रकार शीर्षलेख सेट करने के लिए संभव है? या क्या मुझे इस कार्यक्षमता के लिए रैक/परीक्षण का उपयोग करना होगा?
भी संभावना है कि [wrap_parameters अभी भी भंडाफोड़] है (https://github.com/rails-api/rails-api/issues/33) रेल-एपीआई परियोजना के साथ और सामग्री प्रकार को सेट करने के साथ इसका कोई लेना-देना नहीं है। –
पुष्टि की है कि wrap_parameters: url_encoded_form प्रारूप को विधि कॉल में जोड़कर काम करता है: 'wrap_parameters प्रारूप: [: url_encoded_form,: json] ' –
आप rspec अनुरोध वातावरण के तत्वों को नियंत्रक में' request.env [' HTTP_CONTENT_TYPE '] के साथ सेट कर सकते हैं। = 'एप्लिकेशन/जेसन' या जो भी आपको चाहिए। – nmott