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

控制器及返回值

控制器类

1、ControllerBase与Controller
webapi的controller 继承自 ControllerBase
在这里插入图片描述
webmvc 继承自controller
在这里插入图片描述
controller 继承自controllerbase
在这里插入图片描述

2、控制器类可以不显式地继承自任何类
还是需要添加特性
在这里插入图片描述

运行:
在这里插入图片描述

Action方法的异步

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

示例:
在这里插入图片描述
运行结果:
在这里插入图片描述
普通类型 序列化为格式
首先创建一个Person类
在这里插入图片描述
在这里插入图片描述
运行结果:
在这里插入图片描述
普通抛出异常方式,会在客户端直接显示异常信息。这是很不友好的
在这里插入图片描述
运行结果:
在这里插入图片描述
希望返回404
将返回值改为IActionResult
在这里插入图片描述
运行结果:
在这里插入图片描述
也可添加泛型
在这里插入图片描述
【总结:】
如果你的返回类型只有一种类型,那么直接使用哪一种类型得返回类型即可,若有多种则可以使用IAcitonResult

Asp.Net Core Web API Action 方法参数

add 方法使用[HTTPGET]默认的是querystring的方式传递
在这里插入图片描述
思考如何手动指定数据来自于querystring 还是路径还是来自请求体

捕捉URL占位符

1、在[HttpGet]、[HttpPost]等中使用占位符,比如[schoolName},捕捉路径中的内容,从而供Action方法的参数使用。
Students/GetAll/school/MIT/class/A001
[HttpGet(“school/schoolNamel/class (classNol”)]
2、捕捉的值会被自动赋值给Action中同名的参数如果名字不一致,可以用[FromRoute(Name=“名字”)]
3、演示混用
在这里插入图片描述
运行结果:
在这里插入图片描述

名字不同时:
在这里插入图片描述
运行结果:
在这里插入图片描述
HttpPost 方式
在这里插入图片描述
运行结果
在这里插入图片描述

捕捉QUERYSTRING的值

1、使用[FromQuery]来获取QueryString中的值。如果名字一致,只要为参数添加[FromQuery]即可;而如果名字不一致[FromQuery(Name = 名字)]。
在这里插入图片描述

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格式

复杂参数类型,可以用类的方式
在这里插入图片描述
请求方式相对应即可(2声明一个模型类和Json请求的格式一致即可)
在这里插入图片描述
混合使用
在这里插入图片描述
运行结果:
在这里插入图片描述

在这里插入图片描述
一定要设定请求头中的Content-Type为application/json,而且数据必须是合法的json格式
在这里插入图片描述

其他方式

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
swagger的小问题,其实还是获取的浏览器端的 user_agent

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/302709.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows11下载安装nacos(2.3.0)详解

一、环境要求 windows7以上 jdk8及以上版本,并且配置了JAVA_HOME环境变量 二、nacos下载解压 release版本地址:Releases alibaba/nacos GitHub 下载后解压即可,上面的tar.gz是linux版本 解压后如下 nacos自己内置有数据库derby,我用的是…

国产编程语言炫彩,界面库ui dll,有人了解吗

中文编程: 中英文双语编程, 中英一键切换, 中英对照, 中文为主, UNICODE/ANSI编码都支持; 完全免费: 炫语言免费, 调试器免费, IDE绿色版无需安装; 纯文本: 纯文本格式代码, 随意复制粘贴, GIT代码托管, 多人合作开发; PY风格: PY风格代码, 通过代码缩进确定作用域 非 大花括…

腾讯面试总结

腾讯 一面 mysql索引结构?redis持久化策略?zookeeper节点类型说一下;zookeeper选举机制?zookeeper主节点故障,如何重新选举?syn机制?线程池的核心参数;threadlocal的实现&#xff…

RFID传感器|识读器CNS-RFID-01/1S在AGV小车|搬运机器人领域的安装与配置方法

AGV 在运行时候需要根据预设地标点来执行指令,在需要 AGV 在路径线上位置执行某个指令时候,则需要在这个点设置 命令地标点,AGV 通过读取不同地标点编号信息,来执行规定的指令。读取地标点设备为寻址传感器,目前&#…

【MIT 6.S081】2020, 实验记录(1),Lab: Xv6 and Unix utilities

目录 实验准备TasksTask 1: Boot xv6Task 2: sleepTask 3: pingpongTask 4: primesTask 5: findTask 6: xargs 实验准备 这个 lab 用来学习尝试如何通过 system call 来实现常见的 shell 命令行程序,比如 ls、sleep、xargs 等。 实验官网 可以使用 docker 搭建实…

JetPack组件学习ViewModel

ViewModel的使用 1.需要先创建ViewModel类,继承自ViewModel重写onclear方法,使得页面销毁的时候能够走到自定义的onClear方法中 class MyViewModel : ViewModel() {//共享数据的核心在于拿到同一个LiveData实例,也就是拿到同一个ViewModel实…

Windows10升级到Windows11 Office未激活解决方案

Windows11出了很久了,昨天才升级,今天打开Word发现激活不了,我的是2019的版本,然后发现是Windows系统的注册表的问题,想要找到解决方案还不简单,所以记录一下。 解决方案: Win r打开输入rege…

进程间通信之匿名管道和命名管道的理解和实现【Linux】

进程间通信之匿名管道和命名管道的理解和实现 进程间通信什么是管道匿名管道代码实现管道的读写规则管道特点 命名管道创建命名管道代码实现 进程间通信 进程间通信的目的 数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同…

Unity 利用UGUI之Slider制作进度条

在Unity中使用Slider和Text组件可以制作简单的进度条。 首先在场景中右键->UI->Slider,新建一个Slider组件: 同样方法新建一个Text组件,最终如图: 创建一个进度模拟脚本,Slider_Progressbar.cs using System.C…

php实现支付宝商户转账

目录 一:背景介绍 一:准备工作 三:代码实现 一:背景介绍 最近工作中,要用到支付宝的商家转账功能,用php代码实现,网上找的内容,有些是老版本的实现,有些是调用sdk&am…

代码随想录二刷 |二叉树 | 验证二叉搜索树

代码随想录二刷 |二叉树 | 验证二叉搜索树 题目描述解题思路递归法迭代法 代码实现递归法迭代法 题目描述 98.验证二叉搜索树 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子…

解决:Unity : Error while downloading Asset Bundle: Couldn‘t move cache data 问题

目录 问题: 尝试 问题得到解决 我的解释 问题: 最近游戏要上线,发现一个现象,部分机型在启动的时候闪退或者黑屏,概率是5%左右,通过Bugly只有个别机型才有这个现象,其实真实情况比这严重的多…

Async In C#5.0(async/await)学习笔记

此文为Async in C#5.0学习笔记 1、在async/await之前的异步 方式一:基于事件的异步Event-based Asynchronous Pattern (EAP). private void DumpWebPage(Uri uri) {WebClient webClient new WebClient();webClient.DownloadStringCompleted OnDownloadStringCo…

VMware安装与CentOS8安装与配置

VMware安装与CentOS8安装与配置 话不多说,咱们开始干,文末附资料哦~ 一、安装VMware 1、双击安装包 2、如提出什么重启,重启就是了 3、按照提示下一步 4、选择安装目录,下一步 5、取消勾选,下一步 安装完成后&…

【FPGA】分享一些FPGA数字信号处理相关的书籍

在做FPGA工程师的这些年,买过好多书,也看过好多书,分享一下。 后续会慢慢的补充书评。 【FPGA】分享一些FPGA入门学习的书籍【FPGA】分享一些FPGA协同MATLAB开发的书籍 【FPGA】分享一些FPGA视频图像处理相关的书籍 【FPGA】分享一些FPGA高速…

【愚公系列】2023年12月 HarmonyOS教学课程 054-Web组件(基本使用和属性)

🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主&#xf…

【python】使用fitz包读取PDF文件报错“ModuleNotFoundError: No module named ‘frontend‘”

【python】使用fitz包读取PDF文件报错“ModuleNotFoundError: No module named ‘frontend’” 正确解决过程 在读取PDF文件时,我使用了fitz包,当使用代码import fitz导入该包时,出现了报错: 于是我直接使用以下代码安装fronten…

Vmware安装windowsServer2022版本

虚拟机配置 文件->新建虚拟机 典型安装与自定义安装 典型安装:VMware会将主流的配置应用在虚拟机的操作系统上,对于新手来很友好。 自定义安装:自定义安装可以针对性的把一些资源加强,把不需要的资源移除。避免资源的浪费。…

二叉树的直径,力扣

目录 题目地址: 题目: 我们直接看题解吧: 审题目事例提示: 解题方法: 难度分析: 解题方法分析: 解题分析: 补充说明: 代码优化: 题目地址: 543. 二…

设计模式的艺术P1基础—2.2 类与类的UML图示

设计模式的艺术P1基础—2.2 类与类的UML图示 在UML 2.0的13种图形中,类图是使用频率最高的两种UML图之一(另一种是用于需求建模的用例图),它用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解…