Kgn*_*web 8 c# asp.net-web-api postman
以下是WebAPI操作.关于以下错误的谷歌搜索: -
请求的资源不支持http方法'POST'
我得到了很多链接并相应地更新了我的api,但我仍然得到同样的错误.
ASP.NET Web Api:请求的资源不支持http方法'GET'
[AcceptVerbs("POST")]
[HttpPost]
[Route("rename/{userId}/{type}/{title}/")]
public IHttpActionResult Rename([FromBody] int userId, [FromBody] string type, [FromBody] string title)
{
//my api stuff
}
Run Code Online (Sandbox Code Playgroud)但仍然在通过post post调用上述内容时会抛出错误.
我该如何摆脱这个错误?
还可以在不使用[FromBody]方法参数列表中的属性的情况下修复此问题吗?
任何帮助/建议高度赞赏.谢谢.
您已声明需要 url 参数的路由
[Route("rename/{userId}/{type}/{title}/")]
Run Code Online (Sandbox Code Playgroud)
因此,当您向api/customer/rename它发送请求时,与此方法不匹配。您应该从路由参数中删除您在请求正文中传递的参数
[Route("rename")]
Run Code Online (Sandbox Code Playgroud)
确保RoutePrefix("api/customer")您的控制器具有适当的属性。
第二个问题是多个[FromBody]参数。你会得到无法绑定多个参数的错误。有一个限制 - 您只能将一个参数标记为 FromBody。请参阅发送简单类型注释:
Web API 最多读取一次请求体,因此请求体中只能有一个动作参数。如果需要从请求正文中获取多个值,请定义复杂类型。
您应该创建将保存所有参数的复杂类型
public class RenameModel
{
public int UserId { get; set; }
public string Type { get; set; }
public string Title { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
并将方法签名更改为
[HttpPost]
[Route("rename")]
public IHttpActionResult Rename(RenameModel model)
Run Code Online (Sandbox Code Playgroud)
并将请求数据作为application/x-www-form-urlencoded 发送
| 归档时间: |
|
| 查看次数: |
11205 次 |
| 最近记录: |