在ASP.NET Core Web API中,有多种方式可以传递参数给操作方法。以下是一些常见的参数传递方式:
- 路由参数(Route Parameters):参数值从URL的路由中提取。
// Route: api/users/{id}
[HttpGet("api/users/{id}")]
public IActionResult GetUserById(int id)
{
// 使用id执行操作
return Ok();
}
当操作方法中的名称与路由中的名称不一样时,可以使用[FromRoute(Name="xxxx")]
来指定。
如:
[HttpGet("school/{schoolName}/class/{classNo}")]
public ActionResult<Student[]> GetAll(string schoolName,[FromQuery(Name="classNo")]string classNum)
- 查询字符串参数(Query String Parameters):参数值从URL的查询字符串中提取
// Route: api/users
[HttpGet("api/users")]
public IActionResult GetUsers(string name, int age)
{
// 使用name和age执行操作
return Ok();
}
请求示例:GET /api/users?name=John&age=25
同样地,如果操作方法中,参数名称与请求参数名称不一致,可以使用[FromQuery(Name="xxx")]
来指定。
public ActionResult<Student[]> GetAll([FromQuery] string pageNum,[FromQuery(Name="pSize")]int pageSize)
请求:?pageNum=8&pSize=10
.
- 请求体参数(Request Body Parameters):参数值从请求的主体中提取。
public class CreateUserModel
{
public string Name { get; set; }
public int Age { get; set; }
}
// Route: api/users
[HttpPost("api/users")]
public IActionResult CreateUser([FromBody] CreateUserModel model)
{
// 使用model的属性执行操作
return Ok();
}
请求示例:POST /api/users,请求体:{"Name": "John", "Age": 25}
- 标头参数(Header Parameters):参数值从请求的标头中提取。
// Route: api/users
[HttpGet("api/users")]
public IActionResult GetUsers()
{
string apiKey = Request.Headers["API-Key"];
// 使用apiKey执行操作
return Ok();
}
请求示例:GET /api/users,标头:API-Key: secretkey
除了路由参数、查询字符串参数和请求体参数之外,还有其他常见的参数传递方式,如表单参数和多部分/form-data 参数。下面我将为你一一介绍这些方法,并提供相应的示例。
- 表单参数(Form Parameters):
在 ASP.NET Core Web API 中,你可以使用 [FromForm] 属性将参数绑定到表单数据。这适用于使用 application/x-www-form-urlencoded 格式或 multipart/form-data 格式提交的表单数据。
[HttpPost("api/users")]
public IActionResult CreateUser([FromForm] CreateUserModel model)
{
// 使用表单数据执行操作
return Ok();
}
多部分/form-data 参数:
如果你的 API 允许客户端上传文件或发送多部分数据,可以使用 IFormFile 类型接收文件上传。
[HttpPost("api/users/avatar")]
public IActionResult UploadAvatar([FromForm] IFormFile file)
{
// 处理文件上传操作
return Ok();
}
如果需要同时接收其他表单字段,你可以创建一个模型类来表示多部分/form-data 数据。
public class CreateUserWithAvatarModel
{
public string Name { get; set; }
public int Age { get; set; }
public IFormFile Avatar { get; set; }
}
[HttpPost("api/users")]
public IActionResult CreateUserWithAvatar([FromForm] CreateUserWithAvatarModel model)
{
// 使用模型中的数据执行操作,包括文件上传
return Ok();
}
需要注意的是,对于多部分/form-data 数据,你需要确保在客户端请求中使用正确的 Content-Type 标头,以便服务器能够正确解析请求。
标签:Core,ASP,Ok,users,Web,api,参数,public,请求 From: https://www.cnblogs.com/johnyang/p/17558138.html