首页 > 编程语言 >ASP.NET Core Web API中操作方法中的参数来源

ASP.NET Core Web API中操作方法中的参数来源

时间:2023-07-16 17:12:40浏览次数:41  
标签:Core ASP Ok users Web api 参数 public 请求

在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

相关文章

  • MiniNK WEB 选拔题 by F12
    Start除了梦想外一无所有的我们,将会和蔑视与困境做最后的斗争,这是最后一舞N0wayBack联合战队成立以来一直致力于信息安全技术的研究,作为联合战队活跃在各大CTF(信息安全竞赛)赛事之中,并依靠着过硬的实力吸引了无数同样热爱安全的小伙伴。战队现有师傅20余名,特训学生10余名,包括......
  • 【IP】vivado中IP核的Core Container特性
    一、XCI和XCIX格式文件在Vivado中生成IP核时,一般默认是对应的IP核文件夹会生成在工程目录的.srcs/sources_1/ip路径下。这个文件夹包含了所有与该IP核相关的文件,最主要的是XCI文件,其中包含了用户配置的相关信息。 Vivado还提供了CoreContainer特性,可以将所有与IP相关的文件......
  • webpack打包格式及使用说明
    webpack打包的devTool选项格式的含义如下选项含义优点缺点适用场景evaleval会将每一个module模块,执行eval,执行后不会生成sourcemap文件,仅仅是在每一个模块后,增加sourceURL来关联模块处理前后对应的关系速度快由于会映射到转换后的代码,而不是映射到原始代码,所以不能......
  • 【一】Ajax与异步编程之web服务端
    【一】Ajax与异步编程之web服务端Ajax属于客户端网络技术,属于js范畴。基于aiohttp模Ajax与异步编程之web服务端块构建一个提供http协议的web服务器,并准备数据给客户端请求使用。pipinstallaiohttppipinstallaiohttp_corsserver.pyfromaiohttpimportwebimporta......
  • python通过Websocket与html主动通讯
    python通过Websocket与html主动通讯导语:在Web开发中,实现实时通信是一项常见的需求。本文将介绍如何使用Python和WebSocket技术实现与HTML页面的实时通信,以显示当前的实时时间。1.WebSocket简介WebSocket是一种全双工通信协议,允许在客户端和服务器之间建立持久连接,实现实时数据......
  • webhook
    作用范围kube-apiserver请求处理全流程webhook可以作用于准入。准入控制回调时,MutatingAdmissionWebhook可以修改对象,ValidatingAdmissionWebhook可以拒绝请求。参考资料深入理解KubernetesAdmissionWebhook......
  • lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /home/liuj
     glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于glibc囊括了几乎所有的 UNIX 通行的标准,可以想见其内容包罗万象。而......
  • linux 中 asprta 软件的安装
     001、下载软件:官网:https://www.ibm.com/aspera/connect/ 002、上传至linux系统中并安装tar-xzvfibm-aspera-connect_4.2.6.393_linux_x86_64.tar.gzbashibm-aspera-connect_4.2.6.393_linux_x86_64.sh 003、 ......
  • 会声会影2023旗舰版Corel VideoStudio Ultimate 2023 V26.0.0.136整合盘版本
    会声会影2023旗舰版CorelVideoStudioUltimate2023V26.0.0.136整合盘版本是一款有趣且直观的视频编辑器,包含高级工具和高级效果,智能功能和最佳性能的高级视频编辑软件,将您最美好的时刻和生活体验变成令人惊叹的电影。会声会影2023下载地址:https://souurl.cn/kdsHII会声会影2022......
  • dotnet 连接sqlite数据库 orm EntityFrameworkCore
    dotnet_learn/appsettings.json{"Logging":{"LogLevel":{"Default":"Information","Microsoft.AspNetCore":"Warning"}},"AllowedHosts":"*"}d......