我的Web API控制器具有以下方法:
[HttpPost]
[Route("updateUser")]
public HttpResponseMessage UpdateUser([FromBody] Guid userId, UserRequest request)
字符串
在Postman中,我试图在body中调用这样的请求,但它抛出了一个语法错误
"27ab0d5a-4330-413c-bce1-21238dce44cb",
{
"name": "regex2",
"city": "sdsdsdssd"
}
型
如何解决这个问题?
2条答案
按热度按时间yk9xbfzb1#
你能在一个DTO类中包含
Guid
和UserRequest
以及参数吗?这可能会更容易,因为你可以将所有内容合并组合到一个JSON表达式中。然后,你的UpdateUser方法将只接受该DTO类型的一个参数[FromBody]
。DTO类看起来像这样:
字符串
您的POST消息的签名将更改为:
型
.你会像这样将序列化的DTO传递给Postman:
型
carvr3hs2#
对于默认WebApi项目中具有
[ApiController]
属性的控制器,它将绑定请求体中的值,就像[FromBody]
属性附加到您的参数一样此外,请检查相关文件:
不要将[FromBody]应用于每个动作方法的多个参数。一旦请求流被输入格式化程序读取,它就不再可用于再次读取以绑定其他[FromBody]参数。
如果你想分离参数,你可以尝试通过查询部分传递userid,并修改你的控制器:
字符串
这里有一个相关的问题,你可以检查详细的原因和另一种解决方案(不推荐)