我正在使用ASP构建我的第一个WebAPI。NETMVC4WebAPI。
请求必须使用应用程序/json ContentType以utf-8为字符集发送。
我的POST方法如下所示:
public HttpResponseMessage Post([FromBody]string value)
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
无论何时发送POST请求,参数“value”都为null。请求正文包含Json:{“name”:“test”}
。
我更喜欢将Post方法的参数设置为包含Json的字符串或JObject类型(来自Json.NET库)。我如何做到这一点?这可能吗?
最简单的方法是直接从请求中获取原始字符串。内容:
public async Task<HttpResponseMessage> Post()
{
string value = await Request.Content.ReadAsStringAsync();
return new HttpResponseMessage(HttpStatusCode.OK);
}
有一种方法可以让ASP. NET Web Api将您的请求体视为字符串内容,但是为了做到这一点,内容必须是=value
格式的,在您的情况下是这样的:
={ "name":"test" }
您可以通过以下jQuery代码实现类似的功能(例如):
$.post('api/values', '=' + JSON.stringify({ name: 'test' }));
在这种情况下,你可以从你的问题中使用签名。
最后,始终可以选择创建自己的MediaTypeFormatter
,以替换默认的JsonMediaTypeFormatter
,并使其始终将内容反序列化为JObject
。您可以在此处和此处阅读有关创建和注册MediaTypeFormatter
的更多信息。