当前位置:网站首页>【.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去看底层的代码。
以上就是该篇博客的全部内容,如果觉得有帮助,欢迎大家留言、转发、推荐或点赞。
边栏推荐
- dichotomy
- 2019强网杯高明的黑客
- 原油等特殊期货开户要求和豁免
- ECCV 2022 | BMD: 面向无源领域自适应的类平衡多中心动态原型策略
- 冷冻电镜聚类中心(2D Class)粒子图像的解析
- August 9, 2022: Build .NET apps in C# -- use the Visual Studio Code debugger to interactively debug .NET apps (won't, fail)
- 小家电控制板开发——未来小家电行业的发展方向
- 微信开发者工具程序开发好后,不报错,但是黑屏「建议收藏」
- vr虚拟仿真样板间极大节省出样成本-深圳华锐视点
- MySQL的索引你了解吗
猜你喜欢
单片机的优点和单片机开发的流程
<IDEA using tricks & & combined operation of common keys>
.NET 6学习笔记(4)——解决VS2022中Nullable警告
B48 - 基于51单片机的学生管理门禁系统设计
Video chat source code - how to improve the quality of one-to-one live broadcast?
图像几何校正
MySQL索引的B+树到底有多高?
Apple Developer Account Apply for D-U-N-S Number
消防安全培训|暑期“消防课堂”,开讲!
shopee引流方式有哪些,商家如何为自己店铺做引流?
随机推荐
融云 x N 世界:构建无限用户实时交互的「元宇宙会场」
嵌入式软件开发的特点和流程
2.1、基于并行上下文注意网络的场景文本图像超分辨率
成为CTO,6个月被老板干死,我损失了1000万
总结了 110+ 公开专业数据集
测试/开发程序员喜欢跳槽?跳了就能涨工资吗?
单片机的优点和单片机开发的流程
MySQL索引的B+树到底有多高?
Collection of DP Optimization Methods
Sigrity PowerSI Characteristic Impedance and Coupling Simulation
The article details of the qiucode.cn website realize the code block can be copied by clicking the button
B019 - 甲醛甲烷煤气温湿度时间测试仪
浅谈如何保证Mysql主从一致
3种特征分箱方法!
B40 - 基于STM32单片机的电热蚊香蓝牙控制系统
3 Feature Binning Methods!
现在,怎么挑选舞台租赁LED显示屏?
vr虚拟仿真样板间极大节省出样成本-深圳华锐视点
在 ASP.NET Core 中上传文件
2022小米运维开发笔试1