杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题

这篇具有很好参考价值的文章主要介绍了杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

控制器及返回值

控制器类

1、ControllerBase与Controller
webapi的controller 继承自 ControllerBase
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
webmvc 继承自controller
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
controller 继承自controllerbase
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端

2、控制器类可以不显式地继承自任何类
还是需要添加特性
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端

运行:
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端

Action方法的异步

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

示例:
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
运行结果:
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
普通类型 序列化为格式
首先创建一个Person类
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
运行结果:
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
普通抛出异常方式,会在客户端直接显示异常信息。这是很不友好的
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
运行结果:
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
希望返回404
将返回值改为IActionResult
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
运行结果:
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
也可添加泛型
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
【总结:】
如果你的返回类型只有一种类型,那么直接使用哪一种类型得返回类型即可,若有多种则可以使用IAcitonResult

Asp.Net Core Web API Action 方法参数

add 方法使用[HTTPGET]默认的是querystring的方式传递
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
思考如何手动指定数据来自于querystring 还是路径还是来自请求体

捕捉URL占位符

1、在[HttpGet]、[HttpPost]等中使用占位符,比如[schoolName},捕捉路径中的内容,从而供Action方法的参数使用。
Students/GetAll/school/MIT/class/A001
[HttpGet(“school/schoolNamel/class (classNol”)]
2、捕捉的值会被自动赋值给Action中同名的参数如果名字不一致,可以用[FromRoute(Name=“名字”)]
3、演示混用
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
运行结果:
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端

名字不同时:
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
运行结果:
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
HttpPost 方式
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
运行结果
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端

捕捉QUERYSTRING的值

1、使用[FromQuery]来获取QueryString中的值。如果名字一致,只要为参数添加[FromQuery]即可;而如果名字不一致[FromQuery(Name = 名字)]。
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端

2、QueryString和Route可以混用

JSON 报文体

1、Web API的开发模式下,Json格式的请求体是主流
2、只要声明一个模型类和Json请求的格式一致即可。
3、也是可以把从URL获取参数、从请求报文体获取数据等这些混合使用。
[HttpPost(“classld/(classld)”)]
public ActionResult AddNew(long classldStudentModel s)
4、一定要设定请求头中的Content-Type为application/json,而且数据必须是合法的json格式

复杂参数类型,可以用类的方式
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
请求方式相对应即可(2声明一个模型类和Json请求的格式一致即可)
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
混合使用
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
运行结果:
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端

杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
一定要设定请求头中的Content-Type为application/json,而且数据必须是合法的json格式
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端

其他方式

Web API中很少用的方式:
1、从Content-Type为multipart/form-data的请求中获取数据的[FromForm]
2、从请求报文头中获取值的[FromHeader].

杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题,ASP.NET,asp.net,后端
swagger的小问题,其实还是获取的浏览器端的 user_agent文章来源地址https://www.toymoban.com/news/detail-805991.html

到了这里,关于杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自己实现 SpringMVC 底层机制 系列之-实现任务阶段 6-完成控制器方法获取参数-@RequestParam

    😀前言 自己实现 SpringMVC 底层机制 系列之-实现任务阶段 6-完成控制器方法获取参数-@RequestParam 🏠个人主页:尘觉主页 🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉 在csdn获奖荣誉: 🏆csdn城市之星2名 ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣

    2024年02月11日
    浏览(42)
  • NetCore WebApi AOP统一返回值设计

    实体 BaseResultModel ValidationFailedResult ValidationFailedResultModel 过滤器 ApiResultFilterAttribute ErrorFilter ValidateModelAttribute 思考 如果我们这样的确确定了统一的返回值 但是又对代码有一定的入侵 是 统一返回好 还是说在控制器哪里创建返回值对象好呢?

    2024年02月15日
    浏览(33)
  • Autosar BSW层CAN控制器相关参数------11(物理层。位时间、Tq、采样点等)

            生活不易,猫咪叹气。好久没更新,距离上次更新已经是快半年前了。毕业到现在,已经在这家公司呆了快2年了。快的话一个月,慢的话两个月,马上就是提桶的日子了。                            说回我们的正题。                 平时在工作上,对于通

    2024年02月10日
    浏览(43)
  • AD域控制器将辅域控制器角色提升为主域控制器

    域控服务器迁移,已将新机器添加为该域的辅域控制器。 主域控制器:test-dc-01 辅域控制器:test-dc-02 需求将主辅域的角色进行互换,test-dc-01更换为辅域,test-dc-02更换为主域。 方法1 命令行修改AD域角色 1.查看当前主域控制器是哪台机器,查询命令 netdom query fsmo 可以看到当前

    2024年02月12日
    浏览(57)
  • Unity 第三人称 玩家控制器+相机控制器

    今天给大家分享一个简单的Unity第三人称视角下玩家控制器和相机控制器的脚本编写方法。   效果如下: 主要分三部分实现:人物旋转、人物移动、相机旋转。 1.人物移动: 首先获取到人物水平和垂直移动的参数: 因为人物移动的方向跟摄像头一致,所以需要根据摄像头的

    2024年02月06日
    浏览(75)
  • 18-k8s控制器资源-cronjob控制器

            job控制器是执行完一次任务,就结束;         cronjob控制器,是基于job控制器,定期频率性执行任务;等同于linux系统中的crontab一样; [root@k8s231 pi]# vim cronjob.yaml apiVersion: batch/v1 kind: CronJob metadata:   name: xinjizhiwa spec:   schedule: \\\"* * * * *\\\"   #定义job的模板   jobTemplate

    2024年02月22日
    浏览(67)
  • 15-k8s控制器资源-deployment/部署控制器

            在学习rc和rs控制器资源时,我们指导,这两个资源都是控制pod的副本数量的,但是,他们两个有个缺点,就是在部署新版本pod或者回滚代码的时候,需要先apply资源清单,然后再删除现有pod,通过资源控制,重新拉取新的pod来实现回滚或者迭代升级;         那么

    2024年02月21日
    浏览(69)
  • 14-k8s控制器资源-rs控制器replicasets

            replicaset副本控制器,简称:rs控制器;         用法:与rc控制器“几乎”相同;         能力:可以指定pod的副本始终存活,相比于rc控制器;支持标签匹配,也支持标签表达式         注意:不论是rc还是rs资源,都是通过“标签”惊醒匹配pod的,如果有同样

    2024年02月21日
    浏览(59)
  • 13-k8s的控制器资源-rc控制器replicationcontrollers

            replicationcontrollers控制器资源,简称:rc控制器;         简单理解,rc控制器就是控制相同的pod副本数量;         使用rc控制器资源创建pod,就可以设定创建pod的数量; [root@k8s231 rc]# vim rc.yaml apiVersion: v1 kind: ReplicationController metadata:   name: rc01 spec:   #控制pod的副本

    2024年02月20日
    浏览(62)
  • 【进口控制器替代】基于Zynq-7020 FPGA的NI 8槽CompactRIO控制器

    667 MHz双核CPU,512 MB DRAM,1 GB存储容量,Zynq-7020 FPGA,更宽工作温度范围,8槽CompactRIO控制器 cRIO-9068是一款坚固耐用的无风扇嵌入式控制器,可用于高级控制和监测应用。这款软件设计控制器搭载FPGA、运行NI Linux Real-Time操作系统的实时处理器以及嵌入式用户界面功能。cRIO-906

    2024年01月25日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包