在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 标头,以便服务器能够正确解析请求。

ASP.NET Core Web API中操作方法中的参数来源的更多相关文章

  1. 在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务

    在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务 https://procodeguide.com/programming/polly-in-aspnet-core ...

  2. [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了

    [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 本文首发自:博客园 文章地址: https://www.cnblogs.com/yilezhu/p/ ...

  3. C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志

    C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...

  4. 或许是你应该了解的一些 ASP.NET Core Web API 使用小技巧

    一.前言 在目前的软件开发的潮流中,不管是前后端分离还是服务化改造,后端更多的是通过构建 API 接口服务从而为 web.app.desktop 等各种客户端提供业务支持,如何构建一个符合规范.容易理 ...

  5. ASP.NET Core Web API 教程 - Project Configuration

    ASP.NET Core Web API 教程 本系列文章主要参考了<Ultimate ASP.NET Core 3 Web API>一书,我对原文进行了翻译,同时适当删减.修改了一部分内 ...

  6. ASP.NET Core Web API中使用Swagger

    本节导航 Swagger介绍 在ASP.NET CORE 中的使用swagger   在软件开发中,管理和测试API是一件重要而富有挑战性的工作.在我之前的文章<研发团队,请管好你的API文档& ...

  7. 在docker中运行ASP.NET Core Web API应用程序

    本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Cor ...

  8. docker中运行ASP.NET Core Web API

    在docker中运行ASP.NET Core Web API应用程序 本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过 ...

  9. 在ASP.NET Core Web API中为RESTful服务增加对HAL的支持

    HAL(Hypertext Application Language,超文本应用语言)是一种RESTful API的数据格式风格,为RESTful API的设计提供了接口规范,同时也降低了客户端与服务 ...

  10. 如何在ASP.NET Core Web API测试中使用Postman

    使用Postman进行手动测试 如果您是开发人员,测试人员或管理人员,则在构建和使用应用程序时,有时了解各种API方法可能是一个挑战. 使用带有.NET Core的Postman为您的Web API生 ...

随机推荐

  1. autMan奥特曼机器人-wxbot邀请入群插件的使用

    内置微信(非微信框架)的拉群插件怎么用? 一.安装"wxbot邀请入群"插件 二.在"我的"->"wxbot邀请入群"->配参中 ...

  2. SpringBoot - [00] 注解大全

    原文链接:https://mp.weixin.qq.com/s/DgNhohtJyEq4vMGEzqrP8A @SpringBootApplication 这个注解用于标识一个SpringBoot应用 ...

  3. 【Jmatpro 10.0】根据材料牌号输出应力-应变曲线

    1.前提条件 Jmatpro 软件 一个材料牌号或者材料成分数据 2. 步骤 以 X15Cr 13牌号金属为案例 材料数据来自:材数库 运行jmatpro软件 选择 material type:sta ...

  4. antd+vue 中select组件的自定义后缀图标不显示问题记录

    根据项目需求,需要使用select组件,并自定义后缀图标,但是设置了没的效果,这是我的代码和效果图 后来查看代码发现需要给select组件加上showArrow属性,然后实现了效果,看效果图 这里记录 ...

  5. PostgreSQL psql 常用快捷命令

    psql 常用快捷命令 \l 显示所有数据库 \c 切换当前数据库,相当于 mysql 的 use 命令 \d 显示数据库中有哪些表 \d tb_name 显示表 tb_name 的定义 \d+ 显示 ...

  6. linux php重启

    1.停止命令 你可以先查看自己的php进程有没有启动 ps -ef | grep php [root@iZ6we4yxap93y2r0clg3g8Z ~]# ps -ef | grep php roo ...

  7. B@se-还原错误字母表转码的base64编码

    题目: 密文:MyLkTaP3FaA7KOWjTmKkVjWjVzKjdeNvTnAjoH9iZOIvTeHbvD== JASGBWcQPRXEFLbCDIlmnHUVKTYZdMovwipatNOe ...

  8. English interview - how to show your skills in English during the interview process?(probably used in resume,cover letter)

    Formula We can use the formula below to express our skills in English. Formula: adv/adj + verb phras ...

  9. protected修饰符讲解、java中继承的特点-java se进阶 day01

    1.protected权限修饰符的介绍 之前在说权限修饰符时候,没有细说protected,今天,我们就来聊聊protected 如图,protected修饰符中,"不同包的子类" ...

  10. CPU 和GPUskinning对比

    CPU: 比如广泛的设备兼容性,比如上面说的精确逻辑处理,比如可以根据距离对Skinning进行LOD(如近距离角色每秒30帧Skinning,远距离角色每秒15帧Skinning),比如多Pass渲 ...