[FromRoute][FromBody]等属性——详解

先看总结(5种)💯

🌱[FromRoute] :表示从 URL 路径中获取参数。

🌱[FromBody]:表示从请求体中获取参数。

🌱[FromQuery]:表示从查询字符串中获取参数。

🌱[FromFrom]:从表单中获取参数

🌱[FromHeader]:从Http请求头获取参数

🍎不加属性:默认情况下可以工作,前提是参数名称与示例请求字段名保存一致,可以省略不加属性。

🍎加属性:增加代码的明确性和可读性,特别适用于参数名称不一致的情况。

 

一、[FromRoute] 属性——URL路径

含义

[FromRoute] 是一个属性(attribute),通常用于 ASP.NET Core 或类似的 Web 框架中,表示从 URL 路径中获取参数。

示例

1、代码

[HttpPost("delete/{ids}")]
public IActionResult DeleteInfo([FromRoute]string ids) { 
        return ToResponse(_InfoService.Delete(idArr));
    }

2、属性 [FromRoute]:

这个属性表明参数 ids 应该从 URL 路径中获取。

在例子中,URL 路径为 delete/{ids},其中 {ids} 是路径中的一个占位符。

3、示例 URL:

如果 ids 的值为 1,2,3,那么请求的 URL 可能是 /delete/1,2,3。

4、参数绑定:

当请求到达时,框架会自动将 URL 中的 {ids} 部分绑定到方法参数 string ids 上。

注意:不加 [FromRoute] 也可以使用,这是因为默认情况下,ASP.NET Core 会根据 URL 路径中的占位符自动绑定参数。

默认行为

如果你在路径中定义了一个占位符(如 {ids}),并且在方法签名中有对应的参数,那么 ASP.NET Core 会自动将路径中的这部分值绑定到相应的参数上。

示例:

假设你的路径是 delete/{ids},并且方法签名中有 string ids 参数,那么即使没有 [FromRoute] 属性,框架也会自动进行绑定。

 [HttpPost("delete/{ids}")]
    public IActionResult DeleteInfo(string ids)
    {
        return ToResponse(_InfoService.Delete(idArr));
    }

优点

明确性:

使用 [FromRoute] 可以明确指定参数是从路径中获取的,增加了代码的可读性和维护性。

灵活性:

如果参数名称与路径中的占位符名称不一致,必须使用 [FromRoute] 明确指定。

例如:

 [HttpPost("delete/{id}")]
     public IActionResult DeleteBoxInfo([FromRoute] string ids)

二、[FromQuery]属性——查询字符串

含义

[FromQuery] 是一个属性(attribute),用于指定一个方法参数应该从请求的查询字符串(query string)中获取。这是在 ASP.NET Core 和其他类似的 Web 框架中常用的一种参数绑定方式。

什么是查询字符串?

查询字符串是 URL 中 ? 后面的部分,通常用于传递额外的参数。例如:

URL: http://example.com/api/resource?id=1&name=John

查询字符串: ?id=1&name=John

示例

1、c#代码

 [HttpGet("resource")]
    public IActionResult GetResource([FromQuery] int id, [FromQuery] string name)
    {
        // 逻辑处理
        return Ok(new { Id = id, Name = name });
    }

2、示例请求

URL: http://example.com/api/resource?id=1&name=John

3、参数绑定

id: 从查询字符串中的 id 获取,值为 1。

name: 从查询字符串中的 name 获取,值为 John。

默认行为

如果不使用 [FromQuery],默认情况下,ASP.NET Core 会根据参数名称自动绑定查询字符串中的值。

例如:只要参数名称与查询字符串中的键相同,就可以正常工作。

[HttpGet("resource")]
public IActionResult GetResource(int id, string name)
{
    // 逻辑处理
    return Ok(new { Id = id, Name = name });
}

优点

明确性:

明确指定参数来源,提高代码的可读性和维护性。

灵活性:

如果参数名称与查询字符串中的键不同,可以使用 [FromQuery] 明确指定。

[HttpGet("resource")]
public IActionResult GetResource(
[FromQuery] int resourceId, [FromQuery] string resourceName) 

三、[FromBody]属性——请求体Json

含义

[FromBody] 是一个属性(attribute),用于指定一个方法参数应该从请求体(request body)中获取。这是在 ASP.NET Core 和其他类似的 Web 框架中常用的一种参数绑定方式。

什么是请求体?

请求体(request body)通常用于发送 JSON 数据或其他类型的结构化数据。例如:

POST 请求的 URL: http://example.com/api/resource

请求体(JSON 格式): { "id": 1, "name": "John" }

示例

1、c#代码

public class YourController : ControllerBase
{
    /// <summary>
    /// 创建资源信息
    /// </summary>
    /// <param name="resource">资源对象</param>
    /// <returns>创建结果</returns>
    [HttpPost("resource")]
    public IActionResult CreateResource([FromBody] Resource resource)
    {
        // 逻辑处理
        return Ok(resource);
    }
}

public class Resource
{
    public int Id { get; set; }
    public string Name { get; set; }
}

2、示例请求

URL: http://example.com/api/resource

请求体(JSON 格式): { "id": 1, "name": "John" }

3、参数绑定

resource: 从请求体中的 JSON 数据获取,值为 { "id": 1, "name": "John" }。

默认行为

如果不使用 [FromBody],默认情况下,ASP.NET Core 会尝试根据参数名称自动绑定请求体中的数据。例如:

[HttpPost("resource")]
public IActionResult CreateResource(Resource resource)
{
    // 逻辑处理
    return Ok(resource);
}

在这种情况下,只要请求体中的 JSON 数据与对象属性名称一致,就可以正常工作。

优点

明确性:

明确指定参数来源,提高代码的可读性和维护性。

灵活性:

如果参数名称与请求体中的键不同,可以使用 [FromBody] 明确指定。

     [HttpPost("resource")]
     public IActionResult CreateResource([FromBody] ResourceModel resource)
     

 

四、[FromForm]属性——表单

含义:

[FromForm] 是一个属性(attribute),用于指定一个方法参数应该从表单数据(form data)中获取。这是在 ASP.NET Core 和其他类似的 Web 框架中常用的一种参数绑定方式。

什么是表单数据?

表单数据(form data)通常用于上传文件或发送键值对的数据。例如:

POST 请求的 URL: http://example.com/api/resource

表单数据(multipart/form-data): id=1&name=John

示例

1、代码

  [HttpPost("resource")]
    public IActionResult CreateResource([FromForm] int id, [FromForm] string name)
    {
        // 逻辑处理
        return Ok(new { Id = id, Name = name });
    }

2、示例请求

URL: http://example.com/api/resource

表单数据(multipart/form-data):id=1&name=John

注意:

headers: {'Content-Type':'application/x-www-form-urlencoded'},

3、参数绑定

id: 从表单数据中的 id 获取,值为 1。

name: 从表单数据中的 name 获取,值为 John。

默认行为

如果不使用 [FromForm],默认情况下,ASP.NET Core 会尝试根据参数名称自动绑定表单数据中的值。例如:

[HttpPost("resource")]
public IActionResult CreateResource(int id, string name)
{
    // 逻辑处理
    return Ok(new { Id = id, Name = name });
}

在这种情况下,只要参数名称与表单数据中的键相同,就可以正常工作。

优点

明确性:

明确指定参数来源,提高代码的可读性和维护性。

灵活性:

如果参数名称与表单数据中的键不同,可以使用 [FromForm] 明确指定。


     [HttpPost("resource")]
     public IActionResult CreateResource([FromForm] int resourceId, [FromForm] string resourceName)
     

五、[FromHeader] 属性——Http请求头

[FromHeader] 用于明确指定参数应该从请求头中获取。如果不使用 [FromHeader],框架会尝试根据参数名称自动绑定,但在某些情况下,使用 [FromHeader] 更加明确和灵活。

不常用,上什么的类似~

小白一枚~

其他可以自行百度哦~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值