Web API Put - 传递的参数为空
Web API Put - Parameter passed is null
我正在使用 Postman 测试我编写的 PUT Web API 方法,但无论我尝试什么,我传递的强类型参数 (MyModel) 始终为 null。
控制器操作
[Route("api/myapiname/{id}/{name}")]
[HttpPut]
public HttpResponseMessage Put(int id, string name, MyModel mymodel)
{
*//Do stuff*
}
我的模型Class
public class MyModel
{
public MyModel() { }
private Boolean _b;
public Boolean b { set { _b = value; } get { return _b; } }
private String _comments;
public String comments { set { _comments = value; } get { return _comments; }}
}
URL
http://localhost:37781/api/myapiname/123456/laura
邮递员[=39=]
PUT: URL above
Headers:
Content-Type: application/json
Body:
{
"MyModel":[{"b": true,"comments": "Comments go here"}]
}
我试过更改此行:
public HttpResponseMessage Put(int id, string name, MyModel mymodel)
至
public HttpResponseMessage Put(int id, string name, [FromBody]MyModel mymodel)
并将 Postman 上的内容类型更改为 x-www-form-urlencoded,我还尝试更改传递给的内容:
=[{"b":真,"comments":"Comments go here"}]
我已经尝试了 Whosebug 上提供的各种解决方案,但没有任何效果,有人可以帮助我吗?
您的 Postman 请求在正文中显示一个带有数组 属性 的对象,或者当操作需要单个 MyModel
对象时显示请求。
这是与您的示例操作相匹配的请求的原始片段:
PUT /api/myapiname/123456/laura HTTP/1.1
Host: http://localhost:37781
Content-Type: application/json
...
Content-Length: 42
{"b": true,"comments": "Comments go here"}
此操作:
[Route("api/myapiname/{id}/{name}")]
[HttpPut]
public HttpResponseMessage Put(int id, string name, MyModel mymodel){...}
应该可以满足上述要求。
注:
To force Web API to read a simple type from the request body, add the
[FromBody] attribute to the parameter.
邮递员请求中的 Json 将解析为这样的对象...
public class MyObject {
public MyModel[] MyModel {get; set;}
}
所以您要么需要更改您的请求以匹配您定义的操作,要么更改您的操作以匹配请求
[Route("api/myapiname/{id}/{name}")]
[HttpPut]
public HttpResponseMessage Put(int id, string name, MyObject mymodel){...}
我正在使用 Postman 测试我编写的 PUT Web API 方法,但无论我尝试什么,我传递的强类型参数 (MyModel) 始终为 null。
控制器操作
[Route("api/myapiname/{id}/{name}")]
[HttpPut]
public HttpResponseMessage Put(int id, string name, MyModel mymodel)
{
*//Do stuff*
}
我的模型Class
public class MyModel
{
public MyModel() { }
private Boolean _b;
public Boolean b { set { _b = value; } get { return _b; } }
private String _comments;
public String comments { set { _comments = value; } get { return _comments; }}
}
URL
http://localhost:37781/api/myapiname/123456/laura
邮递员[=39=]
PUT: URL above
Headers:
Content-Type: application/json
Body:
{
"MyModel":[{"b": true,"comments": "Comments go here"}]
}
我试过更改此行:
public HttpResponseMessage Put(int id, string name, MyModel mymodel)
至
public HttpResponseMessage Put(int id, string name, [FromBody]MyModel mymodel)
并将 Postman 上的内容类型更改为 x-www-form-urlencoded,我还尝试更改传递给的内容: =[{"b":真,"comments":"Comments go here"}]
我已经尝试了 Whosebug 上提供的各种解决方案,但没有任何效果,有人可以帮助我吗?
您的 Postman 请求在正文中显示一个带有数组 属性 的对象,或者当操作需要单个 MyModel
对象时显示请求。
这是与您的示例操作相匹配的请求的原始片段:
PUT /api/myapiname/123456/laura HTTP/1.1
Host: http://localhost:37781
Content-Type: application/json
...
Content-Length: 42
{"b": true,"comments": "Comments go here"}
此操作:
[Route("api/myapiname/{id}/{name}")]
[HttpPut]
public HttpResponseMessage Put(int id, string name, MyModel mymodel){...}
应该可以满足上述要求。
注:
To force Web API to read a simple type from the request body, add the [FromBody] attribute to the parameter.
邮递员请求中的 Json 将解析为这样的对象...
public class MyObject {
public MyModel[] MyModel {get; set;}
}
所以您要么需要更改您的请求以匹配您定义的操作,要么更改您的操作以匹配请求
[Route("api/myapiname/{id}/{name}")]
[HttpPut]
public HttpResponseMessage Put(int id, string name, MyObject mymodel){...}