【.NET 6】开发minimal api以及依赖注入的实现和代码演示

前言:

.net 6 LTS版本发布已经有一段时间了。此处做一个关于使用.net 6 开发精简版webapi(minimal api)的入门教程演示。

1、新建一个项目。此处就命名为 SomeExample:

 af5e43ef725262885998cadb1086882b.png

2、选择 .net6版本,并且此处先去掉HTTPS配置以及去掉使用控制器的选项:

 0daed520bbd6cdac39187874e8fcff7d.png

3、创建完成以后,原始画面如下所示。并且,解决方案一栏只剩下program文件,其他文件都被精简掉了。并且没有Main函数入口和命名空间等。

 13402338683e186bea7f2d2ada268679.png

4、接下来开始做几个简单的webapi方法案例。先删掉原有的,替换为自定义的来个webapi方法,一个Get,一个Post。具体代码如下图所示。

 907b73191274f8fe83870bad27f3fe29.png

5、运行以后,会打开自带的swagger页面。大佬们可以自行比对代码部分和swagger部分的一些特点。

 3dd90e77c12bfe1f8cc89ad61a2faf55.png

6、执行HelloWorld这个Get方法的执行结果,如下图所示。

 acad04fadd6169da1485399ea0e46655.png

7、执行HelloMiniApi这个Post方法的执行结果,如下图所示。

 795cb736dd6d31b71591603eec265b8c.png

8、Api根据不同的用途,在swagger展示上面,咱们还可以对它进行一些分类。分类通过设置Tags标签来实现,具体设置内容:在方法的末尾设置WithTags,里面指定分类的显示的名称。运行以后的swagger展示效果和有关代码,如下图所示。

 e071d99f07afe1b008e89cb1d3662e6b.png

9、对api方法进行分代码文件管理。如果API方法很多,全写在program里面也不现实。所以下面做个拓展。新建用于测试使用的静态类 TestService,并且实现一个静态方法 TestApi。其中,方法的参数必须是 this WebApplication。然后就可以通过传入的参数,来拓展实现webapi,例如此处新增一个ServiceApi的api方法,以及有关其他实现,如下图所示。

 25246064464ec683b227c05d250c82f5.png

10、新增拓展的api以后,需要在program文件里面引用使用,详细内容如下图所示。

 2d41dbdbb5a72f73cdf7e1fe3d6b49f8.png

11、运行以后的swagger展示图。

 c6580365b3ae300fdcf8401966a072ee.png

12、测试下执行结果,返回预期结果,说明测试成功。

 9a1ac30beeb3bb7832d2e74b0d8a01ed.png

13、测试下VS 2022热重载的功能,在返回值里面进行修改,然后点击热重载小火苗按钮进行热更新。

 fee4898f8bd923e946c927db11a7a4be.png

14、热更新以后,不需要重新编译,直接在swagger展示页对刚才设置的api方法进行调用,调用结果如下图所示,说明热重载更新成功。将来遇到需要调试的代码时候,大佬们都可以很方便地进行热更新,无需重新编译,可以大大提高效率。

 7beafefc12e14830661827fc42460e03.png

15、接下来是依赖注入的验证测试。新增一个测试服务类 TestDependencyInjection,具体实现内容如图所示。

 a4d623ae0dba4da9963dd6e959c92813.png

16、TestDependencyInjection对应的接口 ITestDependencyInjection内容:

 30568a99479281a283ccdc58cc7bedc0.png

17、在program文件里面,对上面的服务进行注册。此处注册一个单例实例,具体代码如下图展示。

 2121c6a1ca3d594e7e577cb1cb1cc708.png

18、接下来是验证依赖注入是否成功。此处我在ServiceApi这个webapi方法里面进行注入。注入需要注意事项:在webapi方法的委托类型的参数里面,第一个参数必须是HttpContext;然后后面是自己的参数,此处是注入服务的接口。并且在api方法里面调用了show方法进行验证。

 52adb9352e44567e8eccbb6fa25d578b.png

19、运行程序,在swagger展示页面点击执行对应的webapi方法,并查看结果。如下图所示,输出show方法里面的内容,代表依赖注入成功。

 5e5e31533a4e45587a6174c6e3dd29be.png

20、再扩展个VS2019开始拥有的一个隐藏技能:引用的第三方或者nuget包时候(不限制.net 版本),在对应的封装的类或者方法上面,按F12,可以直接进入到反编译以后的代码里面去,可以看到封装的源码。例如此处以UseSwagger为例,在此处按F12进去瞅瞅究竟。

 85893bc757146ed963a4977f2a4916ed.png

21、正常情况下咱们应该F12进去只能看见属性名称、方法名称,看不到具体实现。而现在是可以看到具体实现的代码的。如下图所示,方法里面的具体代码都有,也可以继续进一步F12去看底层的代码。

 80699573eb898bd785686933f517e7a4.png

以上就是该篇博客的全部内容,如果觉得有帮助,欢迎大家留言、转发、推荐或点赞。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(转载)VS2010/MFC编程入门之四(MFC应用程序框架分析)

上一讲鸡啄米讲的是VS2010应用程序工程中文件的组成结构,可能大家对工程的运行原理还是很模糊,理不出头绪,毕竟跟C编程入门系列中的例程差别太大。这一节鸡啄米就为大家分析下MFC应用程序框架的运行流程。 一.SDK应用程序与MFC应用程序运行过…

2022年中国中小学教育信息化行业研究报告

教育信息化丨研究报告 核心摘要: 背景篇 目前,我国中小学教育主要呈现信息时代教育的特征,智能时代教育特征初露端倪;中小学教育信息化正从量变迈向质变,创新引领与生态变革成为行业纵深的主旋律; 2021年…

使用curl指令发起websocket请求

昨日的文章没指出websocket请求协商切换的精髓,删除重发。前文相关:• .NET WebSockets 核心原理初体验[1]• SignalR 从开发到生产部署避坑指南[2]tag:浏览器--->nginx--> server其中提到nginx默认不会为客户端转发Upgrade、Connectio…

Yii 2 的安装 之 踩坑历程

由于刚接触yii2 ,决定先装个试试&#xff1b;可是这一路安装差点整吐血&#xff0c;可能还是水平有限吧&#xff0c; 但还是想把这个过程分享出来&#xff0c;让遇到同样问题的同学有个小小的参考&#xff0c;好了言归正传&#xff01;&#xff01; <(~.~)> 下面是安装流…

设计模式之代理模式(上) 静态代理与JDK动态代理

2019独角兽企业重金招聘Python工程师标准>>> 代理模式 给某一个对象提供一个代理&#xff0c;并由代理对象控制对原对象的引用。静态代理 静态代理是由我们编写好的类&#xff0c;在程序运行之前就已经编译好的的类&#xff0c;此时就叫静态代理。 说理论还是比较懵…

WPF 实现更换主题色

WPF 实现更换主题色WPF 使用 WPFDevelopers.Minimal 如何更换主题色作者&#xff1a;WPFDevelopersOrg原文链接&#xff1a; https://github.com/WPFDevelopersOrg/WPFDevelopers.Minimal框架使用大于等于.NET40&#xff1b;Visual Studio 2022;项目使用 MIT 开源许可协议&a…

vue3与vue2的区别

先来说说当下市场开发使用的问题&#xff0c;目前2021年使用vue3开发的企业还是少&#xff0c;基本上都还是以vue2的形式进行开发&#xff0c;vue3的开发模式跟react很像&#xff0c;这时候有人就会想那我学vue3有用么&#xff0c;淦&#xff0c;他喵的&#xff0c;先别激动&am…

Spring Data REST API集成Springfox、Swagger

原文: Documenting a Spring Data REST API with Springfox and Swagger 使用Spring Date REST&#xff0c;你可以迅速为Spring Date repositories的创建REST API&#xff0c;并提供CRUD和更多功能。然而&#xff0c;在严谨的API开发过成功&#xff0c;您还希望拥有自动生成的最…

【系统设计】S3 对象存储

在本文中&#xff0c;我们设计了一个类似于 Amazon Simple Storage Service (S3) 的对象存储服务。S3 是 Amazon Web Services (AWS) 提供的一项服务&#xff0c; 它通过基于 RESTful API 的接口提供对象存储。根据亚马逊的报告&#xff0c;到 2021 年&#xff0c;有超过 100 万…

转: telnet命令学习

1.每天一个linux命令&#xff08;58&#xff09;&#xff1a;telnet命令 转自&#xff1a; http://www.cnblogs.com/peida/archive/2013/03/13/2956992.html telnet命令通常用来远程登录。telnet程序是基于TELNET协议的远程登录客户端程序。Telnet协议是TCP/IP协议族中的一员&a…

禅道、码云、coding、redmine、jira、teambition几大敏捷开发项目管理系统试用对比体验

作为一个软件公司的管理人员&#xff0c;在项目和人员多起来后&#xff0c;就需要通过系统来对项目和人员进行管理。 我们是典型的软件外包公司&#xff0c;专为客户定制软件&#xff0c;所以我们的业务都是项目型的。因此&#xff0c;在管理模式上&#xff0c;我们就要用所谓…

Dubbo中的SPI机制

Dubbo中的SPI机制 概述 Service Provider Interface 即 SPI&#xff0c;是JDK内置的一种服务提供发现机制&#xff0c;可以用来启用框架扩展和替换组件。可以让不同的厂商针对统一接口编写不同的实现 SPI实际上是“接口策略模式配置文件”实现的动态加载机制。在系统设计中&…

JWT:拥有我,即拥有权力

Hi&#xff0c;这里是桑小榆。上篇文章中&#xff0c;我们一起探讨了 OAuth 协议的原理以及授权认证流程&#xff0c;本次我们一起探讨 jwt 令牌作为授权协议的传输介质。OAuth协议规范了几个参与角色的授权标准&#xff0c;安全可控的授予第三方应用&#xff0c;第三方应用获取…

双十一到来之前,阿里AI设计师“鲁班”1天能做4000万张海报

相比较去年&#xff0c;“鲁班”的设计技艺有所提升。 人工智能很大程度上便利了我们的生活&#xff0c;现在他们甚至还能取代了一些设计师的工作&#xff0c;在双十一正式到来之前&#xff0c;淘宝的宣传已经铺天盖地&#xff0c;然而很多人都没想到&#xff0c;我们打开淘宝…

Appium移动自动化测试之获取appPackage和appActivity

方法一&#xff1a;直接打开Appium,点击左上角机器人图标 选择apk所在位置&#xff0c;如图所示&#xff0c;这里以ContactManager.apk为例 方法二&#xff1a;利用dex2jar和jd-gui这两个工具反编译apk文件 这里仍以ContactManager.apk为例 (1)重命名ContactManager.apk为Conta…

CAD转WPF: 关于CAD图纸文件转换为WPF矢量代码文件(xaml文件)的技巧

前言&#xff1a;下面的文章&#xff0c;我将会以几个很简单的步骤&#xff0c;来演示一下通过CAD图纸转换为XAML代码文件的方法&#xff0c;供大佬们参考。一、为了演示一个简单的操作&#xff0c;我此处先打开一个空白的CAD&#xff0c;等下用来进行绘制点内容使用。二、自定…

python之新式类与经典类

经典类与新式类经典类:P 或 P()--深度查找&#xff0c;向上查父节点新式类 :P(object)---广度查找&#xff0c;继承object&#xff0c;新式类的方法较多转载于:https://www.cnblogs.com/zyy98877/p/8574983.html

Flowportal-BPM——环境配置

环境配置&#xff1a; 一、控制面板→程序和功能→打开或不关闭Window功能→选择选项 二、控制面板→管理工具→Internet信息服务&#xff08;IIS&#xff09;管理器→左侧第一个→ISAPI和CGI限制→全部选为【允许】 三、控制面板→管理工具→Internet信息服务&#xff08;IIS&…

一篇文章带你搞懂什么是DevOps?

DevOps DevOps 它的英文发音是 /de’vɒps/&#xff0c;类似于“迪沃普斯”&#xff0c;一词本身是对于 development 以及 operation 两个词的混合&#xff0c;其目的在于缩短系统开发的生命周期&#xff0c;在这过程中发布特性、修复bug以及更新均被紧密的结合。 简化的含义为…

微服务架构下分布式事务解决方案 —— 阿里GTS

1 微服务的发展 微服务倡导将复杂的单体应用拆分为若干个功能简单、松耦合的服务&#xff0c;这样可以降低开发难度、增强扩展性、便于敏捷开发。当前被越来越多的开发者推崇&#xff0c;很多互联网行业巨头、开源社区等都开始了微服务的讨论和实践。Hailo有160个不同服务构成&…