当前位置:网站首页>【.NET 6】开发minimal api以及依赖注入的实现和代码演示
【.NET 6】开发minimal api以及依赖注入的实现和代码演示
2022-08-09 16:09:00 【dotNET跨平台】
前言:
.net 6 LTS版本发布已经有一段时间了。此处做一个关于使用.net 6 开发精简版webapi(minimal api)的入门教程演示。
1、新建一个项目。此处就命名为 SomeExample:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

以上就是该篇博客的全部内容,如果觉得有帮助,欢迎大家留言、转发、推荐或点赞。
边栏推荐
- [Server data recovery] Data recovery case of file system data loss caused by SAN LUN mapping error
- Reasons for slow startup of IDEA (1)
- Installation and use of Lombok plugin in IDEA
- 二分法
- Numpy数组索引/切片 多维度索引
- PGSQL backup tool, which is better?
- 【1413. 逐步求和得到正数的最小值】
- 测试/开发程序员喜欢跳槽?跳了就能涨工资吗?
- OpenCV 图像变换之 —— 直方图均衡化
- 智能工具管理系统
猜你喜欢

The use of websocket in uni-app Disconnection, reconnection, heartbeat mechanism

单片机的优点和单片机开发的流程

成为CTO,6个月被老板干死,我损失了1000万

2022国赛Ezpop

B44 - Based on stm32 bluetooth intelligent voice recognition classification broadcast trash

如何让button中的内容分两行显示

聊聊基于docker部署的mysql如何进行数据恢复

Leading practice | How the world's largest wine app uses design sprint to innovate the vivino model

Smart Light Pole Gateway Smart Transportation Application

快捷键修改typora字体----自制脚本
随机推荐
uniapp project construction
国星光电吉利产业园项目主体结构全面封顶,将重点生产 RGB 小间距、Mini LED、TOP LED 等产品
uni-app覆盖组件样式h5生效,微信小程序不生效的问题
2022小米运维开发笔试1
面试中老生常谈的MySQL问答集锦夯实基础
Redis 定长队列的探索和实践
B49 - 基于STM32单片机的心率血氧检测与远程定位报警装置
WeChat developer tools error, prompt did not find the entrance to the app. The json file
Leetcode 算法面试冲刺 热题 HOT 100 刷题(406 416 437 438 448)(六十九)
A51 - 基于STM32的DHT11和LCD显示串口通信仿真
Sigrity PowerSI 特征阻抗和耦合度仿真
生产者-消费者线程模型学习
[ Kitex 源码解读 ] 请求重试
LeetCode 131.分割回文串
B44 - Based on stm32 bluetooth intelligent voice recognition classification broadcast trash
Redis Cache Expiration and Retirement Policy
CPU占用过高问题的排查
margin:auto实现盒子水平垂直居中
2022国赛Ezpop
期货开户交易所的手续费和查询方法