我有两种简单的路由方法:
[RoutePrefix("api/accounts")]
[Route("user/{id:guid}", Name = "GetUserById")]
public async Task<IHttpActionResult> GetUser(string Id)
[Route("user/del/{id:guid}")]
public async Task<IHttpActionResult> DeleteUser(string id)
我想知道为什么如果我用直接ulr(GET)测试第一个方法,它可以工作:
http://localhost/ReportApp_WebApi/api/accounts/user/1533882b-e1fd-4b52-aeed-4799edbbcda6
如果我尝试的第二个链接有点不同:
http://localhost/ReportApp_WebApi/api/accounts/user/del/1533882b-e1fd-4b52-aeed-4799edbbcda6
我得到:请求的资源不支持http方法&#39; GET&#39;。
你能帮助我吗?
答案 0 :(得分:1)
第二个链接不仅仅是有点不同。实际上,它指向您为delete方法定义的路由。这个方法需要DELETE Http动词。
当您直接在浏览器上编写URL时,它会执行GET请求。如果您希望删除方法与GET动词一起使用,则必须放置attribte
[HttpGet]
在您的路线引用之前或之后。 虽然我不建议这样做。你可以拥有像Fiddler或Postman这样的HTTP客户端来测试这个
Web Api在控制器中命名方法时使用约定。因为您将方法命名为DeleteUser,所以Web Api需要删除动词。
编辑&gt;&gt;&gt;请按照评论中列出的建议操作。我也大胆地提到了不推荐这个
的部分