首页 > 编程语言 >asp.net core中webapi接口的动作与参数

asp.net core中webapi接口的动作与参数

时间:2024-11-27 15:33:57浏览次数:4  
标签:webapi core asp 动作 FromBody 参数 FromQuery 操作 public

一、在asp.net core的webapi可以指定接口的action动作类型,动作特性主要有Get,Post,Put,Delete,Head,Options,Patch,Trace,其中Get,Post,Delete是比较常用的

  1、Get:通常用于数据查询,请求参数一般是地址栏上的QueryString获取,请求参数默认为[FromQuery],该动作属于幂等操作①。

  2、Post:通常用于表单数据提交,比如订单提交等,请求参数默认为[FromForm],该动作属于非幂等操作

  3、Put:通过用于保存数据,比如编辑,修改等操作,请求参数默认为[FromBody],该动作属于幂等操作。

  4、Delete:通常用于数据删除,请求参数默认为[FromBody],该动作属于幂等操作。

  5、Head: 与get方法类似,不返回message body内容,仅获取资源部分内容(content-type),该动作属于幂等操作

  6、Options:通常用于Url验证,验证接口是否正常,该动作属于幂等操作

  7、Patch:与Put类似,通过用于部分数据更新,该动作属于幂等操作

  8、Trace:回显服务器收到的请求,客户端能看数据在哪些中间服务器,该动作属于幂等操作

二、在asp.net core的webapi可以指定接口的参数来源特性,常用特性包括FromForm,FromQuery,FromBody,FromRouter,FromHeader,FromServices

  1、FromFrom:从提交的表单数据中获取参数,通常在Content-Type为application/x-www-form-urlencodedmultipart/form-data时使用。当请求属于表单提交时,必须给参数加上FromForm特性,否则会报400错误。通常用表单提交,文件上传等操作。代码示例如下:

[HttpPost("api/createorder")]
public IActionResult CreateOrder([FromForm] order)
{
   //订单提交
}

  2、FromQuery:从链接地址Uri中获取参数,一般用于Get请求,代码示例如下:

[HttpGet("api/users")]
public IActionResult GetUsers([FromQuery]string sortOrder, [FromQuery]int page)
{
    // 使用sortOrder和page参数查询用户列表并返回结果
}

  3、FromBody:从请求的body中获取参数,通过用于JSON格式内容提交,通常在Content-Type为application/json时使用。

[HttpPost("api/saveuser")]
public IActionResult Save([FromBody] UserDto User)
{
    // 保存用户信息
}

  4、FromRouter:从路由中获取参数,比如HttpGet("api/users/{userId}")这个路由,其中{userId}就是动态参数,使用FromRoute就可以获取该参数,示例代码如下:

[HttpGet("api/users/{userId}")]
public IActionResult GetUser([FromRoute] int userId)
{
    // 使用 userId 参数查询用户信息并返回结果
}

  5、FromHeader:从请求的Header里面获取参数,比如获取用户的Token信息,Content-Type等在Request Header里面的内容

  6、FromServices:可以在控制器的方法参数中直接解析服务,而无需在构造函数中注入服务。这种方式简化了服务解析过程,提高了代码的可读性和可维护性,并且便于进行单元测试‌,示例代码如下:  

public IActionResult MyAction([FromServices] IMyService myService) {
    // 使用myService进行操作
    return View();
}

  7、一个方法指定不同的参数来源,代码如下:  

using System.Net.Http;
using System.Web.Http;
 
public class MyApiController : ApiController
{
    public IHttpActionResult GetData([FromQuery] MyQueryModel queryModel, [FromBody] MyFormModel formModel)
    {
        // 在这里处理queryModel和formModel
        // 比如保存到数据库或者返回数据
        return Ok();
    }
}
 
public class MyQueryModel
{
    public string QueryParam1 { get; set; }
    public string QueryParam2 { get; set; }
}
 
public class MyFormModel
{
    public string FormData1 { get; set; }
    public string FormData2 { get; set; }
}

 

① 幂等操作:指方法多次重复执行时,所产生的影响和第一次执行时所产生的影响是相同的

②非幂等操作:是指方法每次的执行结果会产生不一样的影响

标签:webapi,core,asp,动作,FromBody,参数,FromQuery,操作,public
From: https://www.cnblogs.com/ithome8/p/18572401

相关文章

  • 【转】[C#] Aspose.pdf 添加文字水印
    转自:https://www.cnblogs.com/Shi-zy/p/15494760.html另一篇:https://www.cnblogs.com/z5337/p/7344636.html用aspose.word把word转pdf的代码段:DocumentpdfDocument=newDocument(@"D:\pdfdir\jhrs.com.pdf");for(intpageCount=1;pa......
  • Tiny Core Linux 安装和配置
    TinyCoreLinux安装和配置https://blog.csdn.net/stevenldj/article/details/112852507目标通过最小的命令行版TinyCoreLinux系统光盘安装TinyCoreLinux桌面环境,设置中文界面,安装输入法,设置分辨率。所有软件包都从仓库下载,可以安装在虚拟机中,也可以安装在U盘中,实......
  • .NET9 EFcore支持早期MSSQL数据库 ROW_NUMBER()分页
    前言NET程序员是很幸福的,MS在上个月发布了NET9.0RTM,带来了不少的新特性,但是呢,我们是不是还有很多同学软硬件都还没更上,比如,自己的电脑还在跑Win7,公司服务器还在跑MSSQL2005-2008的!这不就引入了我们本文要探索的问题,因为MS早在EFcore3.1后就不再内置支持ROW_NUMBER()了,......
  • asp.net实现微信支付综合管理平台前端页面(支付、订单查询、退款、退款查询)
    <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="index4V2.aspx.cs"Inherits="WXPayDemo.index4V2"%><!DOCTYPEhtml><htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat=&q......
  • C#.NET CORE SM2国密PKCS12格式私钥证书解析
    C#.NETCORE SM2国密PKCS12格式私钥证书解析、加载、签名、加密。 PKCS12格式私钥证书,和常见到.sm2文件私钥证书不同。它虽是BASE64编码的字符串,但不能用解析.sm2文件的方法解析。上来还是nuget下载引用 Portable.BouncyCastle库。工具类 GmUtil:usingOrg.BouncyCastle......
  • C#/.NET/.NET Core技术前沿周刊 | 第 14 期(2024年11.18-11.24)
    前言C#/.NET/.NETCore技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NETCore领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿、推荐或自荐优质文章、项目、学习资源等。每......
  • ALINX 为什么要推出 IP Core 产品线?
      近年来,5G网络的全面部署与人工智能(AI)的迅速普及扩大了FPGA的应用市场。 一方面,传统CPU处理架构在面对实时数据流量和存储操作时容易产生瓶颈,FPGA恰好凭借其高性能、低功耗的特点满足了爆炸式增长的高效数据处理和存储需求。 另一方面,FPGA的可编程性又能很好地......
  • .NET Core 线程池(ThreadPool)底层原理浅谈
    简介上文提到,创建线程在操作系统层面有4大无法避免的开销。因此复用线程明显是一个更优的策略,切降低了使用线程的门槛,提高程序员的下限。.NETCore线程池日新月异,不同版本实现都有差别,在.NET6之前,ThreadPool底层由C++承载。在之后由C#承载。本文以.NET8.0.8为蓝本,如有出入,请......
  • Vue3+Typescript+Axios+.NetCore实现导出Excel文件功能
    前端代码//导出ExcelconstexportMaintenanceOrderSettlementItemExcelClick=async()=>{leturl=`${VITE_APP_API_URL}/api/app/maintenance/settlement-service-item/${currentMaintenanceOrderId.value}/${currentMaintenanceOrderSettlementRow.value.id}`;......
  • 计算机毕业设计原创定制(免费送源码):Javaspringboot++MySQL springboot 社区互助服务管
    摘 要随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受居民的喜爱,社区互助服务管理系统小程序被居民普遍使用,为方便居民能够可以随时进行社区互助服务管理系统小程序的数据信息管理,特开发......