एएसपी.नेट वेबएपीआई बीटा से आरसी में अपग्रेड करने से कुछ उत्साह और निराशा का एक बड़ा सौदा प्रदान किया गया है। मैं अधिकांश मुद्दों के माध्यम से काम करने में सक्षम हूं, लेकिन जो मुझे अभी काट रहा है वह JSON अनुरोध डेटा की केस-संवेदनशीलता है।एएसपी.नेट वेबएपीआई जेएसओएन बाइंडिंग केस-सेंसिटीविटी
जेएसओएन अनुरोधों के लिए प्रयुक्त प्रारूपक (जो डिफ़ॉल्ट रूप से एक JSON.NET फॉर्मेटर है) केस संवेदनशील होता प्रतीत होता है जबकि फ़ॉर्म-यूरेनकोडेड डेटा के लिए प्रयुक्त फॉर्मेटर नहीं होता है। केस-असंवेदनशील फॉर्मेटर का उपयोग करने के लिए JSON अनुरोधों को कॉन्फ़िगर करने का कोई तरीका है?
यहाँ समस्या यह है कि मैं JSON अनुरोध के साथ हो रहा है वर्णन करने के लिए एक सरल उदाहरण है:
HTML/जावास्क्रिप्ट
<button id="tester">Click here!</button>
<script type="text/javascript">
$(function() {
$("#tester").on("click", function() {
$.ajax({
type: "POST",
url: "/Api/Test/Index/" + 168,
data: ko.toJSON({ key: 123, value: "test value" }), // THIS FAILS
// Key: 123, Value: "test value" <- BUT THIS WORKS
contentType: "application/json; charset=utf-8",
statusCode: {
200: function() {
$("body").append("<p>Success</p>");
},
400: function() {
$("body").append("<p>Failure</p>");
}
}
}).always(function() {
$("body").append("<hr />");
});
});
});
</script>
सी #
public class TestController : ApiController
{
public HttpResponseMessage Index(int? id, KeyValuePair<int, string> test)
{
if (id != 168 || test.Key != 123 || test.Value != "test value")
return Request.CreateResponse(HttpStatusCode.BadRequest);
return Request.CreateResponse(HttpStatusCode.OK);
}
}
मैंने उस लाइन पर एक टिप्पणी प्रदान की जहां JSON डेटा प्रदान किया गया है। मैं उचित रूप से आवरण संपत्ति सदस्यों द्वारा अपनी जावास्क्रिप्ट ऑब्जेक्ट्स के साथ सम्मेलन तोड़ना नहीं चाहूंगा और मैं निश्चित रूप से मेरे सी # गुणों को कम करने के द्वारा सम्मेलन तोड़ना नहीं चाहता हूं। कोई विचार?
मैं थोड़ा यहाँ उलझन में हूँ। आप अपने डेटा को एक POST अनुरोध के भीतर भेजते हैं - दूसरे शब्दों में, अनुरोध निकाय के भीतर। लेकिन HTTP दस्तावेज़ीकरण में यह कहा गया है कि हेडर फ़ील्ड्स (और मान) को केस-असंवेदनशील माना जाता है, और शरीर के बारे में कुछ भी नहीं है ... आपको क्यों लगता है कि "यह फॉर्म-urlencoded डेटा के लिए व्यवहार नहीं है", मुझे आश्चर्य है? – raina77ow
उदाहरण के लिए [इस चर्चा] [http://groups.google.com/group/soundcloudapi/browse_thread/thread/c266c0d2efa88fbb/9ad3969dde919cba) देखें। – raina77ow
@ raina77ow यह वास्तव में HTTP विनिर्देश के बारे में एक प्रश्न नहीं है लेकिन एएसपी.NET वेबएपीआई आरसी द्वारा उपयोग किए गए JSON.NET फ़ॉर्मेटर का व्यवहार नहीं है। FormUrl फॉर्मेटर केस-असंवेदनशील प्रतीत होता है जबकि JSON.NET फ़ॉर्मेटर * केस-संवेदी है। –