我试图在Postman上调用更新web api,但似乎它没有将id param传递给asp.net核心控制器(asp.net core 2.0)
public class ShoppingCartController : BaseController
{
[HttpPut("{id}")]
[Route("api/ShoppingCart/UpdateShoppingCartItem")]
public IActionResult UpdateShoppingCartItem(long id)
{
return new NoContentResult();
}
}
答案 0 :(得分:2)
您必须使用[FromBody]
。
[HttpPut("{id}")]
[Route("api/ShoppingCart/UpdateShoppingCartItem")]
public IActionResult UpdateShoppingCartItem([FromBody]long id)
{
return new NoContentResult();
}
在Postman中你必须使用一个简单的数字 替换:
{
"id":87908908
}
与
87908908
答案 1 :(得分:1)
param解析的默认行为:来自Url。
在方法参数之前使用self.fc1
让asp从Body中解析这个参数。
答案 2 :(得分:0)
您可以尝试将方法UpdateShoppingCartItem更改为以下内容:
public class Person
{
[Key]
public string Id { get; set; }
public string Firstname{ get; set; }
public string Lastname { get; set; }
}
答案 3 :(得分:0)
HttpPut
现在接受路线作为参数,因此您可以组合您的属性。
public class ShoppingCartController : BaseController
{
[HttpPut("api/ShoppingCart/UpdateShoppingCartItem")]
public IActionResult UpdateShoppingCartItem(long id)
{
return new NoContentResult();
}
}
模型绑定器应该从身体推断出id
的值。
使用[HttpPut("{id}")]
意味着对localhost:44342/65465
的置位请求将是有效的操作。