在c# WebAPI中处理POST表单数据
本文关键字:POST 表单 数据 处理 WebAPI | 更新日期: 2023-09-27 17:50:42
我正在用以下请求调用c# WebAPI:
Request URL: https://devserver/myapp/api/SaveSettings?debug=0
Request Method:POST
Status Code:202 Accepted
Request Headers
...
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
...
Form Data:
config:{"test":"test12"}
Response Headers:
...
Server: Microsoft-IIS/7.5
...
WebAPI应用程序代码为
public class SaveSettingsController : ApiController
{
[System.Web.Http.HttpGet]
[System.Web.Http.HttpPost]
public HttpResponseMessage PostComplex(MyModel update)
{
if (ModelState.IsValid)
{
return Request.CreateResponse(HttpStatusCode.Accepted,update.config.test);
}
}
}
虽然状态码被正确发送(这就是为什么我开始相信这段代码真的被执行了),但内容总是空的,我不知道为什么。我还尝试了一个配置设置为字符串类型的模型,和
return Request.CreateResponse(HttpStatusCode.Accepted,update.config);
但是无效:它仍然返回null。
为什么会这样?我做错了什么?
如果你在web api中有一个post参数,你可以用[FromBody]属性来装饰它,如下所示:
[System.Web.Http.HttpGet]
[System.Web.Http.HttpPost]
public HttpResponseMessage PostComplex([FromBody] MyModel update)
{
if (ModelState.IsValid)
{
return Request.CreateResponse(HttpStatusCode.Accepted,update.config.test);
}
}
你不需要创建响应和所有复杂的东西,只要返回任何值,它就会被json化
您请求的内容类型是application/x-www-form-urlencoded
,但是您发送的是Json数据。要么将内容类型更改为application/json
,要么更改请求体数据的格式。