Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写

简介: Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写

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 是不是就显得很优雅呢?


相关文章
|
2月前
|
SQL 缓存 开发框架
分享一个 .NET EF6 应用二级缓存提高性能的方法
分享一个 .NET EF6 应用二级缓存提高性能的方法
|
28天前
|
开发框架 监控 前端开发
在 ASP.NET Core Web API 中使用操作筛选器统一处理通用操作
【9月更文挑战第27天】操作筛选器是ASP.NET Core MVC和Web API中的一种过滤器,可在操作方法执行前后运行代码,适用于日志记录、性能监控和验证等场景。通过实现`IActionFilter`接口的`OnActionExecuting`和`OnActionExecuted`方法,可以统一处理日志、验证及异常。创建并注册自定义筛选器类,能提升代码的可维护性和复用性。
|
1月前
|
前端开发 JavaScript
前端JS截取url上的参数
文章介绍了两种前端JS获取URL参数的方法:手动截取封装和使用URLSearchParams。
34 0
|
2月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
40 0
|
2月前
|
存储 开发框架 .NET
ASP.NET Web Api 使用 EF 6,DateTime 字段如何取数据库服务器当前时间
ASP.NET Web Api 使用 EF 6,DateTime 字段如何取数据库服务器当前时间
|
2月前
|
程序员 数据库
分享 2 个 .NET EF 6 只更新某些字段的方法
分享 2 个 .NET EF 6 只更新某些字段的方法
|
2月前
|
数据库
分享一个 .NET EF 6 扩展 Where 的方法
分享一个 .NET EF 6 扩展 Where 的方法
|
1月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
34 7
|
1月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
47 0
|
2月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?