先看总结(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] 更加明确和灵活。
不常用,上什么的类似~