Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
  3kuAwr2BISVu 2024年01月23日 14 0

image

Restful 风格的 api 虽然规范了四个方法(GetPostPutDelete)用于数据的查询、增加、修改和删除,但在实际应用中,还是会有很多公司只使用了 GetPost 两个方法,查询数据使用 Get 方法,其它业务操作使用 Post 方法(为什么会有情况,以后可以写一篇文章讨论一下 _),但是 Post 方法一般通过 FromBody 标识进行传参,这样子有时候会显得 api 不太优雅,比如删除一条数据,通常会将要删除的数据的 ID 写在 URL 上,比如:

.../api/delete/1000

1000 就是要删除的数据的 ID,但是按正常的 Post 的写法则是:

.../api/delete

然后前端在参数部分单独写上要删除的数据的 ID,比如 {"id": 1000},这样就显得不够清晰明了。

如果使用 FromUri 标识传参,又会将 URL 变得很长,如:

.../api/delete?id=1000

那么,难道 Post 方法不能把参数加到 URL 中吗?

答案当然是否定的,因为这四个方法本质上是一样的,那么,要怎么写才能让 Post 方法把参数加到 URL 中呢?

其实很简单,像下面这么写就可以了 😃 :

  1. 在路由中使用 {xxx} 符号指定 URL 格式
  2. Post 方法中的参数采用普通方法的参数的形式即可
  3. {xxx} 符号里 xxx 跟 Post 方法中的参数一致

代码示例:

[HttpPost]
[Route("api/delete/{itemGuid}")]
public IHttpActionResult Delete(string itemGuid)
{
    _customerInfoService.Value.DeleteCustomer(itemGuid);
    return Ok(Success());  // NoContent();
}

这样,就可以使用 Post api/delete/1000 来删除数据了,api 是不是就显得很优雅呢?

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2024年01月23日 0

暂无评论

推荐阅读
  NPQODODLqddb   2024年05月17日   66   0   0 .NET
  mVIyUuLhKsxa   2024年05月17日   51   0   0 .NET
  XkHDHG7Y62UM   2024年05月17日   43   0   0 .NET
  f18CFixvrKz8   2024年05月18日   80   0   0 .NET
  rBgzkhl6abbw   2024年05月18日   73   0   0 .NET
  MYrYhn3ObP4r   2024年05月17日   39   0   0 .NET
  S34pIcuyyIVd   2024年05月17日   56   0   0 .NET
  gKJ2xtp6I8Y7   2024年05月17日   50   0   0 .NET
  MYrYhn3ObP4r   2024年05月17日   37   0   0 .NET
3kuAwr2BISVu