FromBody FromForm FromQuery FromHeader FromRoute 区别

在ASP.NET Core Web API中,[FromBody][FromForm][FromQuery][FromHeader][FromRoute]这些特性来明确指定如何绑定请求的不同部分到你的控制器方法参数上。

[FromBody]

通常用于POST和PUT请求,从请求体中读取JSON或XML数据。

[HttpPost]
public IActionResult CreateItem([FromBody] Item item)
{
// 处理请求体中的Item对象
// ...
return Ok();
}

[FromForm]

用于处理表单数据,通常与multipart/form-dataapplication/x-www-form-urlencoded类型的POST请求一起使用。

[HttpPost]
public IActionResult UploadFile([FromForm] IFormFile file, [FromForm] string description)
{
// 处理上传的文件和描述
// ...
return Ok();
}

[FromQuery]

用于从查询字符串中读取数据。如果不明确指定,简单类型的参数通常会默认从查询字符串中读取。

[HttpGet]
public IActionResult GetItem([FromQuery] int id)
{
// 从查询字符串中读取id参数
// ...
return Ok();
}
// 或者,即使没有[FromQuery],id也会从查询字符串中读取
[HttpGet]
public IActionResult GetItem(int id)
{
// ...
return Ok();
}

使用[FromHeader]

用于从HTTP请求头中读取数据。

[HttpGet]
public IActionResult CheckAuth([FromHeader] string authorizationHeader)
{
// 处理授权头信息
// ...
return Ok();
}

[FromRoute]

用于从路由数据中读取数据。当路由模板中有参数时,可以使用此特性明确指定。

[HttpGet("products/{productId}")]
public IActionResult GetProduct([FromRoute] int productId)
{
// 从路由数据中读取productId
// ...
return Ok();
}
// 或者,即使没有[FromRoute],productId也会从路由中读取
[HttpGet("products/{productId}")]
public IActionResult GetProduct(int productId)
{
// ...
return Ok();
}

[FromRoute]、[FromQuery]和[FromBody]是.NET WebAPI中用于从不同请求源提取参数的核心特性。

记得点赞哦

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值