.NET6 WebAPI从基础到进阶--朝夕教育
1、环境准备
2、上手NET6WebAPI
3.1 什么是 RESTful ?
3.2 RESTfull 主要规则是什么?
3.2.2 统一资源接口
3.2.3 资源的表述
3.2.4 资源的链接
3.2.5 状态的转移
4、多方式调用CoreAPI
5、Swagger配置
6、路由解读
6.1 什么是路由?
6.2 特性路由Route
6.3 RESTFul 约束,如果有多个Get、Post...操作怎么办?
6.3 路由约束
6.4 全局路由扩展
7、Swagger补充
7.1 框架支持 API 版本

8、内置IOC容器使用
9、API参数修饰特性
9.1 FromServices
9.2 FromBody
9.3 FromForm
9.4 FromHeader
9.5 FromQuery
9.6 FromRouteapi
10、返回结果
10.1 返回指定类型 (Specific type)
[HttpGet]
[Route("GetStudentById/{id:int}")]
public Student GetStudentById(int id) => new Student()
{
Id = 1,
Age = 36,
Name = "张三"
};
[HttpGet]
[Route("GetStudentList")]
public IEnumerable<Student> GetStudentList() => new List<Student>()
{
new Student()
{
Id = 1,
Age = 36,
Name = "张三"
}, new Student()
{
Id = 1,
Age = 36,
Name = "李四"
}
};
[HttpGet]
[Route("GetAsyncUserList")]
public async IAsyncEnumerable<Student> GetAsyncUserList([FromServices]
IStudentService studentService)
{
var studentlist = studentService.GetUserListAsync();
// 使用GetAuthorsAsync异步方法,不用authors查询完毕,就会进入下一步迭代返回
authors
await foreach (var student in studentlist)
{
yield return student;
}
}
10.2 返回 IActionResult 实例
[Route("GetStudentJson")]
[HttpGet]
public IActionResult GetStudentJson()
{
//返回Json对象
return new JsonResult(new Student()
{
Id = 1,
Age = 36,
Name = "张三"
});
响应Nofound
//return NotFound("No records");
响应Ok
return Ok(); // 必须有Ok等方法包装
}
10.3 返回 ActionResult<T> 实例
[HttpGet]
[Route("GetStudentNew")]
public ActionResult<Student> GetStudentNew()
{
//返回Json对象
return new Student()
{
Id = 1,
Age = 36,
Name = "张三"
};
}
10.4 建议返回类型
WebApi 作为服务存在,需要和第三方对接;
最好能够约束一个标准;固定的返回数据的格式;
public class ApiResult<T> where T : class
{
/// <summary>
/// Api执行是否成功
/// </summary>
public bool Success { get; set; }
/// <summary>
/// 错误消息
/// </summary>
public string? Message { get; set; }
/// <summary>
/// 结果集
/// </summary>
public T? Data { get; set; }
}
11、日志记录
11.1 log4net 日志记录
11.2 数据库日志
11.2 Nlog 日志记录
12、Core WebAPI-Filter
12.1 什么是 AOP ?
12.2 Core WebAPI 中的 AOP 支持有哪些?
12.3 ResourceFilter 扩展定制
12.4 ResourceFilter 扩展缓存
12.5 ActionFilter 扩展定制
12.6 ActionFilter 场景应用
12.7 ExceptionFilter 扩展
12.8 Filter的生效范围和依赖注入
12.9 ResultFilter/AlwaysRunResultFilter 特点总结
13、鉴权授权
13.1 授权核心价值
13.2 JWT授权/token令牌授权
13.3 加密解密技术
13.4 可逆加密:
13.5 鉴权授权角色授权策略授权
[Authorize(AuthenticationSchemes= JwtBearerDefaults.AuthenticationScheme,Roles =
"teacher")]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles =
"admin")]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles =
"student")]
13.6 鉴权授权扩展Requirement
14、发布部署
14.1 Internet Information Services 部署
安装IIS
安装ASP.NET Core运行时环境:https://dotnet.microsoft.com/zh
cn/download/dotnet/6.0
14.2 Linux系统发布 Core WebAPI
Linux系统-CentOS7 ---基于虚拟机来安装
IP:192.168.1.97 安装教程
链接:https://pan.baidu.com/s/1gI93YwptrWdPKHBh5fLNqQ?pwd=6666
提取码:6666
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft
prod.rpm
yum search dotnet-sdk
sudo yum install dotnet-sdk-6.0.3.2
dotnet --list-sdks
dotnet --list-runtimes
相关文章:
.NET6 WebAPI从基础到进阶--朝夕教育
1、环境准备 1. Visual Studio 2022 2. .NET6 平台支持 3. Internet Information Services 服务器( IIS ) 4. Linux 服务器 【 CentOS 系统】 ( 跨平台部署使用 ) 5. Linux 服务器下的 Docker 容器( Docker 部署使用) …...
购物车案例--分模块存储数据,发送请求数据渲染,底部总计数量和价格
shift鼠标右键,打开powershell,新建项目 自定义 只有一个页面,不涉及路由,勾选vuex,css,babel 无需保存预设 回车项目开始创建 项目用vscode打开 将src里的内容全部清空 将第七天的课程准备代码复制粘贴到src中 刷新页面&…...
PCIe学习笔记
PCIE高速串行数据总线 当拿到一块板子 比如你要用到PCIE 首先要看这块板子的原理图 一般原理图写的是 PCI express 表示PCIE 以下是Netfpga为例下的PCIE插口元件原理图 的特点主要体现在它如何结合传统面向对象编程(OOP)的理念与LabVIEW的图形化编程模式,提供灵活的抽象和模块化的功能。以下是LabVIEW面向对象编程的几个主要特点: 1. 类&#x…...
配置Nginx自签名SSL证书,支持HTTPS
配置Nginx自签名SSL证书的流程 生成一个SSL自签名证书客户端机器信任这个自签名证书修改RHEL服务器的Nginx配置在客户机用curl测试HTTPS 生成一个SSL自签名证书 在RHEL服务器上, 用openssl命令生成一个自签名证书 openssl genrsa -out server.key 2048 #生成一个2048位的RS…...
使用Spring Boot、VUE实现SSE长连接:跟踪文件上传和任务进度
使用Spring Boot实现SSE长连接:跟踪文件上传和任务进度 文章目录 使用Spring Boot实现SSE长连接:跟踪文件上传和任务进度什么是SSE?使用场景前端库选择安装event-source-polyfill1. 创建SSE连接2. 关闭SSE连接3. 结合Vue.js使用 使用Spring B…...
计算机网络技术基础:3.计算机网络的拓扑结构
网络拓扑结构是指用传输媒体互连各种设备的物理布局,即用什么方式把网络中的计算机等设备连接起来。将工作站、服务站等网络设备抽象为点,称为“节点”;将通信线路抽象为线,称为“链路”。由节点和链路构成的抽象结构就是网络拓扑…...
go-zero(十二)消息队列
go zero 消息队列 在微服务架构中,消息队列主要通过异步通信实现服务间的解耦,使得各个服务可以独立发展和扩展。 go-zero中使用的队列组件go-queue,是gozero官方实现的基于Kafka和Beanstalkd 的消息队列框架,我们使用kafka作为演示。 一、…...
会议通知:人工智能通识教育与实践发展暨和鲸科技AI通识课解决方案发布会
今年秋季学期起,全国多所高校面向本科生开设人工智能通识课。 当前人工智能通识课程的建设进展主要分为三种情况: 全市统筹,由某头部高校牵头建设市级人工智能通识课,以北京市、天津市为代表; 已于秋季学期按照课程…...
UDS自动化测试-Service 0x27(CAPL调用dll实现key计算)
文章目录 关联文章一、CANoe加载诊断数据库cdd、dll文件二、CAPLdiagGenerateKeyFromSeed关联文章 UDS - 深论Security Access Service 27服务-安全访问状态转换 CDD文件——CANdelaStudio Vector——CAPL语言设计 CANoe诊断测试 相信读者基于Diagnostic/ISO TP Confighratio…...
订单编号如何实现
背景 常见的订单编号是带有一些信息的,比如说创建日期例如:本案例中的订单日期 自增编号日期可以使用格式化字符串,自增则可以使用redis来实现 代码实现 redis就有自增的方法 每天的key都是不一样的,且过期时间设置为1天 // 生成…...
Vue3 大事件管理系统
Vue3 项目实战: 🆗好久没有更新blog,最近在找工作,还有准备考试,哎,😶🌫️爆炸的大环境🥲 内卷开始🌯🌯 本篇文章涉及的技术栈速通链接&#x…...
IOS通过WDA自动化中遇到的问题
IOS自动化遇到的问题 搭建WDA环境中遇到的问题1、XCode unsupport iphone xxx.2、创建Bundle Identifier出现问题:Communication with Apple failed3、创建Bundle Identifier出现问题:Automatic signing failed \Signing certificate is invalid4、创建B…...
单独测试 pyautogui 的鼠标点击功能,确保它能够在当前环境中正常工作,鼠标自动点击的录制回放功能
感谢您提供的详细日志信息。根据您的反馈,问题可能出在 pyautogui 没有正确获取鼠标焦点或无法在预期的位置执行点击操作。我们将采取以下步骤来进一步诊断和解决这个问题: 1. **确保 pyautogui 正确执行点击操作**: - 我们将添加更多的调…...
路由引入问题(双点双向路由回馈问题)
简介 总所周知,路由引入import又称路由重分发redistribute,为了解决不同路由协议进程间路由信息不互通而使用的技术,由于不同路由协议的算法、机制、开销等因素的差异,它们之间无法直接交换路由信息。因此,路由引入技…...
设计模式之 适配器模式 C# 范例
在 C# 中,适配器模式(Adapter Pattern)是一种结构型设计模式,旨在将一个类的接口转换成客户端所期待的另一个接口。适配器模式允许你将现有的类包装起来,使其能够与其他接口兼容。 适配器模式的使用场景: …...
LabVIEW实现GPS通信
目录 1、GPS通信原理 2、硬件环境部署 3、程序架构 4、前面板设计 5、程序框图设计 6、测试验证 本专栏以LabVIEW为开发平台,讲解物联网通信组网原理与开发方法,覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合实际案例,展示如何利用LabVIEW和常用模块实现物联网系…...
Nodejs开发者三步搞定Taotoken接入并实现异步聊天对话功能
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Nodejs开发者三步搞定Taotoken接入并实现异步聊天对话功能 对于Node.js开发者而言,将大模型能力集成到应用中的第一步&…...
抖音批量下载工具:3步搞定无水印视频批量保存
抖音批量下载工具:3步搞定无水印视频批量保存 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音…...
AutoLegalityMod:如何在15分钟内创建完全合法的宝可梦数据
AutoLegalityMod:如何在15分钟内创建完全合法的宝可梦数据 【免费下载链接】PKHeX-Plugins Plugins for PKHeX 项目地址: https://gitcode.com/gh_mirrors/pk/PKHeX-Plugins 从数据混乱到精准合规的技术实现 每个宝可梦训练师都曾面临这样的困境:…...
Godot纸牌游戏框架:分层架构与卡牌状态管理
1. 这不是又一个“通用游戏框架”,而是一套专为纸牌游戏设计的骨骼系统你有没有试过在Godot里从零搭一张卡牌游戏?我试过三次——第一次用Node2D硬堆,拖了二十多个场景,连抽卡动画都得手写Tween;第二次改用Resource做卡…...
从零开始在Taotoken平台创建管理密钥并获取调用示例代码
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 从零开始在Taotoken平台创建管理密钥并获取调用示例代码 1. 开始前的准备 如果你刚开始接触大模型API,可能会觉得配置…...
跨镜头人物ID稳定性不足,深度拆解Sora 2的Temporal Identity Token机制与3层对抗对齐策略
更多请点击: https://kaifayun.com 第一章:跨镜头人物ID稳定性不足的根源诊断 跨镜头人物ID稳定性不足是多目标跟踪(MOT)系统在真实监控场景中面临的核心瓶颈。其本质并非单一模块失效,而是特征表征、时空建模与数据分…...
AssetStudio深度解析:Unity资源二进制结构与离线反编译原理
1. 这不是“又一个Unity资源查看器”,而是一把能拆开Unity游戏包的手术刀AssetStudio这个名字,第一次见的人常误以为是Unity官方出的配套工具——毕竟带个“Studio”后缀,界面又长得挺像Unity编辑器。但其实它和Unity Technologies毫无关系&a…...
Unity纹理保真优化:ASTC压缩与Mipmap精准控制方案
1. 这不是“去马赛克”,而是精准还原被压缩破坏的视觉信息Unity游戏开发中,你有没有遇到过这样的场景:美术同事发来一张4K高清角色贴图,你兴冲冲拖进Unity,设置成Texture Type Default、Compression ASTC_6x6&#x…...
从API调用日志看Taotoken路由容灾机制在实际波动中的表现
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 从API调用日志看Taotoken路由容灾机制在实际波动中的表现 对于依赖大模型API进行开发的团队而言,服务的稳定性是核心关…...
热门推荐:收藏!软件研发小白必看:AI转型从思维转变开始,轻松掌握大模型协作
本文探讨了软件研发团队如何进行AI转型,强调不应从购买工具或引入Agent开始,而是应首先关注个体思维的转变、团队知识底座的统一以及协作流程的重新设计。文章指出,开发者需要从关注代码实现转向关注编码前的设计、上下文组织和边界定义&…...
