임의의 json 개체를 webapi에 게시하는 방법
json 개체를 POST(webapi controller)에 전달하고 매핑할 클래스가 없는 대신 임의 콘텐츠로 처리하는 방법은 무엇입니까?
그래서 제가 제 고객으로부터 그렇게 지나가면,
createRecord: function (model, data, callback, callbackParams) {
var request = jQuery.ajax({
type: "POST", // default = GET,
url: '/api/' + model + '/',
data: data,
contentType: 'application/json',
success: function (msg) {
$('#results').text(msg);
if (callback) // only fire a callback if it has been specified
callback(msg, callbackParams);
},
error: function (jqXHR, textStatus) {
alert('Request failed: ' + textStatus);
}
});
}
데이터는 다음과 같습니다.
{ "_id" : ObjectId("5069f825cd4c1d590cddf206"), "firstName" : "John", "lastName" : "Smith", "city" : "Vancouver", "country" : "Canada" }
컨트롤러가 구문 분석할 수 있습니까?다음 번에는 데이터가 해당 서명과 일치하지 않을 수 있습니다(예:
{ "_id" : ObjectId("5069f825cd4c1d56677xz6"), "company" : "Acme" }
컨트롤러에서 다음을 시도했습니다.
public HttpResponseMessage Post([FromBody]JObject value)
그리고:
public HttpResponseMessage Post([FromBody]string value)
그리고 (이것은 실제로 몽고드와 함께 작동하기 때문에):
public HttpResponseMessage Post([FromBody]BsonDocument value)
하지만 객체 매퍼가 문자열이 아닌 다른 것에 매핑하려고 하는 것 같습니다.
HttpRequestMessage를 사용하여 모델 바인딩 로직을 무시하고 요청 내용을 직접 읽을 수 있는 게시 방법을 사용할 수 있습니다.
public HttpResponseMessage Post(HttpRequestMessage req)
{
var data = req.Content.ReadAsStringAsync().Result; // using .Result here for simplicity...
...
}
그런데 JObject를 가져오는 작업이 작동하지 않는 이유는 데이터에서 "_id"의 값으로 사용되는 'ObjectId("...")' 때문입니다.
우리는 json 객체를 jquery로 전달하고 동적 객체에서 구문 분석했습니다.잘 작동합니다.다음은 샘플 코드입니다.
ajaxPost:
...
Content-Type: application/json,
data: {
"name": "Jack",
"age": "12"
}
...
webapi:
[HttpPost]
public string DoJson2(dynamic data)
{
string name = data.name;
int age = data.age;
return name;
}
스택 오버플로에 대한 유사한 질문: WebAPI Multiple Put/Post 매개 변수
당신의 의견은,"_id": ObjectId("5069f825cd4c1d590cddf206")
서버에서 JSON의 구체화를 깨는 것입니다.제거 중ObjectId
및 사용"_id" : "5069f825cd4c1d590cddf206"
와 함께 작동합니다.JObject
게다가Dictionary<string, object>
매우 쉬우므로 Accept Header를 "application/json"에 넣기만 하면 됩니다.
언급URL : https://stackoverflow.com/questions/13573384/how-to-post-arbitrary-json-object-to-webapi
'programing' 카테고리의 다른 글
Yup/Formik에서 기본 오류 텍스트를 변경하는 방법? (0) | 2023.06.30 |
---|---|
이메일에서 내 파일에 계속 나타나는 ^M은 무엇입니까? (0) | 2023.06.30 |
파이썬의 상대적인 수입에 대해 설명할 수 있는 사람이 있습니까? (0) | 2023.06.25 |
파이썬의 IDLE 창을 지울 방법이 있습니까? (0) | 2023.06.25 |
Git: 새 원격 분기를 볼 수 없습니다. (0) | 2023.06.25 |