• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
IT联盟之家-ithome8
博客园    首页    新随笔    联系   管理    订阅  订阅
asp.net core中webapi接口的动作与参数

一、在asp.net core的webapi可以指定接口的action动作类型,动作特性主要有Get,Post,Put,Delete,Head,Options,Patch,Trace,其中Get,Post,Delete是比较常用的

  1、Get:通常用于数据查询,请求参数一般是地址栏上的QueryString获取,请求参数默认为[FromQuery],该动作属于幂等操作①。

  2、Post:通常用于表单数据提交,比如订单提交等,请求参数默认为[FromForm],该动作属于非幂等操作②。

  3、Put:通过用于保存数据,比如编辑,修改等操作,请求参数默认为[FromBody],该动作属于幂等操作。

  4、Delete:通常用于数据删除,请求参数默认为[FromBody],该动作属于幂等操作。

  5、Head: 与get方法类似,不返回message body内容,仅获取资源部分内容(content-type),该动作属于幂等操作

  6、Options:通常用于Url验证,验证接口是否正常,该动作属于幂等操作

  7、Patch:与Put类似,通过用于部分数据更新,该动作属于幂等操作

  8、Trace:回显服务器收到的请求,客户端能看数据在哪些中间服务器,该动作属于幂等操作

二、在asp.net core的webapi可以指定接口的参数来源特性,常用特性包括FromForm,FromQuery,FromBody,FromRouter,FromHeader,FromServices

  1、FromFrom:从提交的表单数据中获取参数,通常在Content-Type为application/x-www-form-urlencoded或multipart/form-data时使用。当请求属于表单提交时,必须给参数加上FromForm特性,否则会报400错误。通常用表单提交,文件上传等操作。代码示例如下:

[HttpPost("api/createorder")]
public IActionResult CreateOrder([FromForm] order)
{
   //订单提交
}

  2、FromQuery:从链接地址Uri中获取参数,一般用于Get请求,代码示例如下:

[HttpGet("api/users")]
public IActionResult GetUsers([FromQuery]string sortOrder, [FromQuery]int page)
{
    // 使用sortOrder和page参数查询用户列表并返回结果
}

  3、FromBody:从请求的body中获取参数,通过用于JSON格式内容提交,通常在Content-Type为application/json时使用。

[HttpPost("api/saveuser")]
public IActionResult Save([FromBody] UserDto User)
{
    // 保存用户信息
}

  4、FromRouter:从路由中获取参数,比如HttpGet("api/users/{userId}")这个路由,其中{userId}就是动态参数,使用FromRoute就可以获取该参数,示例代码如下:

[HttpGet("api/users/{userId}")]
public IActionResult GetUser([FromRoute] int userId)
{
    // 使用 userId 参数查询用户信息并返回结果
}

  5、FromHeader:从请求的Header里面获取参数,比如获取用户的Token信息,Content-Type等在Request Header里面的内容

  6、FromServices:可以在控制器的方法参数中直接解析服务,而无需在构造函数中注入服务。这种方式简化了服务解析过程,提高了代码的可读性和可维护性,并且便于进行单元测试‌,示例代码如下:  

public IActionResult MyAction([FromServices] IMyService myService) {
    // 使用myService进行操作
    return View();
}

  7、一个方法指定不同的参数来源,代码如下:  

using System.Net.Http;
using System.Web.Http;
 
public class MyApiController : ApiController
{
    public IHttpActionResult GetData([FromQuery] MyQueryModel queryModel, [FromBody] MyFormModel formModel)
    {
        // 在这里处理queryModel和formModel
        // 比如保存到数据库或者返回数据
        return Ok();
    }
}
 
public class MyQueryModel
{
    public string QueryParam1 { get; set; }
    public string QueryParam2 { get; set; }
}
 
public class MyFormModel
{
    public string FormData1 { get; set; }
    public string FormData2 { get; set; }
}

 

① 幂等操作:指方法多次重复执行时,所产生的影响和第一次执行时所产生的影响是相同的

②非幂等操作:是指方法每次的执行结果会产生不一样的影响

posted on 2024-11-27 15:27  IT之家  阅读(360)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3