Nâng cấp từ ASP.NET WebAPI Beta lên RC đã cung cấp một số lượng hứng thú và rất nhiều thất vọng. Tôi đã có thể làm việc thông qua phần lớn các vấn đề, nhưng cái đang cắn tôi ngay bây giờ là trường hợp nhạy cảm với dữ liệu yêu cầu JSON.ASP.NET WebAPI JSON ràng buộc trường hợp nhạy cảm
Trình định dạng được sử dụng cho các yêu cầu JSON (theo mặc định là một định dạng JSON.NET) có vẻ phân biệt chữ hoa chữ thường trong khi trình định dạng được sử dụng cho dữ liệu dạng url được mã hóa không. Có cách nào để cấu hình các yêu cầu JSON để sử dụng một trình định dạng phân biệt dạng chữ không?
Đây là một ví dụ đơn giản để minh họa cho vấn đề mà tôi đang gặp khó với yêu cầu JSON:
HTML/JavaScript
<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>
C#
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);
}
}
Tôi đã đã cung cấp nhận xét về dòng nơi dữ liệu JSON được cung cấp. Tôi không muốn phá vỡ quy ước với các đối tượng JavaScript của tôi bởi các thành viên thuộc tính vỏ thích hợp và tôi chắc chắn không muốn phá vỡ quy ước bằng cách hạ thấp các thuộc tính C# của tôi. Có suy nghĩ gì không?
Tôi là một chút nhầm lẫn ở đây. Bạn gửi dữ liệu của bạn trong một yêu cầu POST - nói cách khác, trong một cơ thể yêu cầu. Nhưng trong tài liệu HTTP, các trường tiêu đề (và các giá trị) được coi là không phân biệt chữ hoa chữ thường và không có gì về cơ thể ... Tại sao bạn nghĩ "nó không phải là hành vi cho dữ liệu dạng url", tôi tự hỏi? – raina77ow
Kiểm tra [thảo luận này] (http://groups.google.com/group/soundcloudapi/browse_thread/thread/c266c0d2efa88fbb/9ad3969dde919cba), ví dụ. – raina77ow
@ raina77ow Đây không thực sự là một câu hỏi về đặc điểm kỹ thuật HTTP mà là hành vi của trình định dạng JSON.NET được ASP.NET WebAPI RC sử dụng. Trình định dạng FormUrl dường như không phân biệt dạng chữ trong khi trình định dạng JSON.NET * có phân biệt chữ hoa chữ thường. –