首页 > 其他分享 >WebAPI 参数和返回值

WebAPI 参数和返回值

时间:2024-07-24 21:28:32浏览次数:10  
标签:WebAPI Name schoolName int 参数 Action 返回值

四季该很好,你若尚在场。 --zhu
控制器类
1、ControllerBase与Controller
2、控制器类可以不显式的继承自任何类。

Action方法的异步
1、Action方法既可以同步也可以异步。
2、异步Action方法的名字一般不需要以Async结尾。
3、WebAPI中Action方法的返回值如果是普通数据类型,那么返回值就会默认被序列化为Json格式。
4、WebAPI中的Action方法的返回值同样支持IActionResult类型,不包含类型信息,因此SWagger等无法推断出类型,所以推荐使用ActionResult,它支持类型转换,使用更简单。

public ActionResult<Person> GetPerson(int id)
{
  if(id<=0)
    return BadRequest("id必须正确");
  else  if(id==1)
    return BadRequest(1,"之士",18);
  else if(id==2)
    return BadRequest(2,"芝士",28);
  else
  return NotFound("人员不存在");
}

捕捉URL占位符
1、在[HttpGet]、[HtttpPost]等中使用占位符,比如{schoolName},捕捉路径中的内容,从而供Action方法的参数使用。/Students/GetAll/school/MIT/class/001
[HttpGet("school/{schoolName}/class/{classNo}")] <=> GetStudentsBySchoolAndClass?school=MIT?class=3
2、捕捉的值会被自动赋值给Action中同名的参数;如果名字不一致,可以用[FromRoute(Name="")]

[HttpGet("school/{schoolName}/class/{classNo}")]
public Person GetStudents(string schoolName,[FromRoute(Name="classNo")] int classNum)
{
  return new Person {Id=classNum+6,Name=schoolName+"学校"};
}

捕捉QueryString值
1、使用[FromQuery]来获取QueryString中的值。如果名字一致,只有为参数添加[FromQuery]即可;而如果名字不一致,[FromQuery(Name="")].
2、QueryString和Route可以混用。

[HttpPost]
public int Save(FromQuery(Name="aaa")int i,int j)
{
  return i+j;
}

Json报文体
1、WebAPI的开发模式下,Json格式的请求体是主流。
2、只要声明一个模型类和Json请求的格式一致即可。
3、可以把从URL获取参数、请求报文体获取数据等混用。

[HttpPost("classId/{classId}")]
public ActionResult<long> AddNew(long classId,StudentModel s)
{
}

4、一定要设定请求头中的Content-Type为application/json,而且数据必须是合法的json格式。

其他方式
WebAPI很少用的方式:
1、从Content-Type为multipart/from-data的请求中获取数据的[FromForm]。上传文件?
2、从请求报文头中获取值的[FromHeader]。

标签:WebAPI,Name,schoolName,int,参数,Action,返回值
From: https://www.cnblogs.com/zhusichen/p/18321072

相关文章

  • 1325、基于51单片机电能表电压电流功率因数等多参数OLED显示设计(程序+原理图+参考论
    毕设帮助、开题指导、技术解答(有偿)见文未  目录方案选择单片机的选择一、设计功能二、实物图单片机模块设计三、原理图四、程序源码资料包括:需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。方案选择单片机的选择方案一......
  • Python-无ABI文件打包EVM合约方法名及参数方法
    #pipinstalleth-abiimporteth_abi#pipinstallsafe-pysha3fromsha3importkeccak_256defkeccak_256_hash(data:str)->bytes: k=keccak_256() k.update(data.encode()) returnk.digest()defpack_abi_data(method:str=None,params:list=No......
  • 为什么 mypy 会忽略函数中的参数错误?
    在下面的示例中,Example.__init__和f_example不带参数。因此,如果我尝试向他们传递一些参数,mypy应该发出警告。但是,当我将mypy检查应用于以下代码时,它不会发出任何警告。我犯错了吗?仅供参考,我还使用了vim和Pyright,并且如我所料,pyright警告这些错误。......
  • 【lamda表达式】在多线程开发中的lamda表达书简化参数
    创建线程后传Runnable参数并实现run方法,可以采用下面两种方式,效果是一样的Threadt1=newThread(newRunnable(){@Overridepublicvoidrun(){//这里是线程应该执行的代码System.out.println("Hello,World!");......
  • 【踩坑系列-JS】iframe中的url参数获取
    Author:赵志乾Date:2024-07-24Declaration:AllRightReserved!!!1.问题描述    系统A的页面中以iframe的方式嵌入了系统B的页面,并需要将A页面url中的参数传递给B页面。    最初的实现方式是:在B页面直接以下面的代码获取url参数,发现参数的值为undefined。let......
  • OSError(22, '无效参数') - 无法打开任何 `.ipynb` 和 `.py` 文件
    我无法打开我过去拥有的任何Jupyernotebook或python文件,并且收到此错误:UnreadableNotebook:C:\Users\[mypath]\main\main.ipynbOSError(22,'Invalidargument')[mypath]是我从上面删除的目录的一部分。我尝试通过解决方案这篇文章,但仍然有同样......
  • 如何接受文件或路径作为python中方法的参数
    我正在尝试编写一个方法,该方法将接受打开的文件myFile=open("myFile.txt")obj.writeTo(myFile)myFile.close()或带有路径的字符串obj.writeTo("myFile.txt")该方法的实现如下:defwriteTo(self,hessianFile):ifisinstance(hessianFile,file):pr......
  • 【超实用攻略】SpringBoot + validator 轻松实现全注解式的参数校验
    一、故事背景关于参数合法性验证的重要性就不多说了,即使前端对参数做了基本验证,后端依然也需要进行验证,以防不合规的数据直接进入服务器,如果不对其进行拦截,严重的甚至会造成系统直接崩溃!本文结合自己在项目中的实际使用经验,主要以实用为主,对数据合法性验证做一次总结,不了解的朋......
  • pytest实战技巧之参数化应用
    pytest是Python中最流行的测试框架之一。它提供了丰富的功能,可以帮助我们编写高效、可靠的测试用例。其中一个重要的功能就是参数化,它可以让我们用不同的数据组合来运行同一个测试用例,从而提高测试覆盖率和效率。本文将介绍pytest参数化的基本用法和一些高级技巧,帮助读者更好地......
  • Android开发 - onDraw方法中canvas参数解析与使用
    drawRoundRect参数解析canvas.drawRoundRect(RectFrect,floatrx,floatry,Paintpaint):rect:RectF对象rx:x方向上的圆角半径ry:y方向上的圆角半径paint:绘制时所使用的画笔绘制圆角矩形实例实例protectedvoidonDraw(Canvascanvas){//TODOAuto-generat......