使用VB.NET 创建.NET6 Minimal Api[号称最小的Webapi](全网首发)

2022-01-14 15:59:22 浏览数 (1)

Minimal API是.Net 6中新增的模板,借助C# 10的一些特性以最少的代码运行一个Web服务。本文使用VB.NET ,完成一个简单的Minimal Api项目的开发。(估计是全网首发吧),找遍了百度,必应,Github都没找到VB.NET版本的Minimal Api项目,找到的都是C#的项目,毕竟专为C#10而生!!!

那么我们为什么要用这玩意呢?首先,我们平时开发的项目,都是使用有限的几个接口,但是又不想用ASP.NET WebAPI这么冗余!那么我们就会找一下简单高性能的Webapi代替,刚好.NET6给了.NET开发者一个期望,可惜在VS项目里,并没有找到VB相关的模板,VB被抛弃的孩子!其次,当然也是想体验一下.NET6的新特性!!!

先来张效果图:

因本人不会使用C#,所有鼓捣了挺久的,特作一个小记录!!!!


新建一个控制台应用,然后添加以下组成部分即可,就这么简单

结果自己鼓捣了大半天

项目的部分组成部分:

①Microsoft.AspNetCore.App 框架

②appsettings.json配置文件

③Program.vb

文件夹组成:

①主要就是My Project里面的launchSettings.json配置文件

②其他文件夹都是自动生成

代码部分主要就是:Program.vb文件,主启动文件

代码语言:javascript复制
Imports Microsoft.AspNetCore.Builder
Imports Microsoft.Extensions.DependencyInjection
Imports Microsoft.Extensions.Hosting
Imports System.Runtime.CompilerServices
Imports System
Imports Microsoft.AspNetCore.Http

Module Program
    ''' <summary>
    ''' Web应用程序容器
    ''' </summary>
    Public builder As WebApplicationBuilder
    ''' <summary>
    ''' Web应用程序
    ''' </summary>
    Public app As WebApplication

    ''' <summary>
    ''' 应用入口
    ''' </summary>
    ''' <param name="args"></param>
    Sub Main(args As String())

        ' 创建容器
        builder = WebApplication.CreateBuilder(args)

        ' ====================================
        ' -------- 这里是配置Swagger文档 -----
        ' 将服务添加到容器中
        ' 了解有关配置Swagger的更多信息/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
        builder.Services.AddEndpointsApiExplorer()
        builder.Services.AddSwaggerGen(Sub(options)
                                           '服务条款
                                           options.SwaggerDoc("v1", New Microsoft.OpenApi.Models.OpenApiInfo With {
                                               .Title = "VB.NET迷你WebAPI测试模板",
                                               .Version = "1.0.0.0",
                                               .Description = "本模板由OuHuanHua创建,公众号:VB小源码",
                                               .Contact = New Microsoft.OpenApi.Models.OpenApiContact With {
                                                               .Name = "OuHuanHua",
                                                               .Email = "463550067@qq.com",
                                                               .Url = New Uri("https://vbee.life")
                                                              }
                                           })
                                       End Sub)

        ' 创建web应用
        app = builder.Build()


        ' 配置HTTP请求环境 开发环境
        If app.Environment.IsDevelopment() Then
            app.UseSwagger()
            app.UseSwaggerUI(Sub(options)
                                 options.DocumentTitle = "VB.NET迷你WebAPI测试_开发环境"
                             End Sub)
        End If

        ' 配置HTTP请求环境 测试环境
        If app.Environment.IsProduction() Then
            app.UseSwagger()
            app.UseSwaggerUI(Sub(options)
                                 options.DocumentTitle = "VB.NET迷你WebAPI测试_生产环境"
                             End Sub)
            ' 多端口监听
            app.Urls.Add("http://localhost:8888")
            'app.Urls.Add("http:// :8888")
        End If

        ' ====================================
        ' -------- 这里开始才是正式的MinAPI---



        ' 在web应用下创建一个测试的WebAPI
        ' GET请求测试
        app.MapGet("/Test", Function()
                                Return New TestType
                            End Function).WithName("GetTest")

        ' POST请求测试
        app.MapPost("/TestPost", Function(req As UserInfoType)
                                     Return $"用户名:{req.username} 用户密码:{req.password}"
                                 End Function).WithName("PostTestPost")


        ' 带参数GET请求测试
        app.MapGet("/TestPram", Function(username As String, password As String)
                                    Return $"用户名:{username} 用户密码:{password}"
                                End Function).WithName("GetTestPram")

        ' 主GET请求测试
        app.MapGet("", Sub(htp As HttpContext)
                           htp.Response.StatusCode = 200
                           htp.Response.Redirect("http://localhost:8888/swagger")
                       End Sub).WithName("GetHome")



        ' 自定义扩展WebApi接口(方便独立写方法)
        app.ExtApiTest()

        ' 启动WebAPI应用
        app.Run()


    End Sub


    ''' <summary>
    ''' 创建一个测试类型
    ''' </summary>
    Public Class TestType
        Public Property ApiName As String = "VB.NET迷你WebAPI测试"
        Public Property ApiAuthor As String = "微信公众号:VB小源码"
        Public Property ApiTime As String = Now
    End Class

    ''' <summary>
    ''' 参数模型
    ''' </summary>
    Public Class UserInfoType
        Public Property username As String
        Public Property password As String
    End Class

End Module

自定义的扩展模块: ModelWebAPIExt.vb只是为了简化代码

代码语言:javascript复制
Imports System.Runtime.CompilerServices
Imports Microsoft.AspNetCore.Builder

''' <summary>
''' WebAPI独立接口模型方法
''' </summary>
Public Module ModelWebAPIExt

    ''' <summary>
    ''' WebApi扩展接口测试
    ''' </summary>
    ''' <param name="app"></param>
    <Extension()> Public Sub ExtApiTest(app As WebApplication)
        app.MapGet("/TestExt", Function()
                                   Return "扩展接口测试"
                               End Function).WithName("GetTestExt")

    End Sub


End Module

好了就这么多墨水了!!!!!!


以上代码看着挺多的实际可以精简Program.vb文件到以下几句代码,其他都可以不要

代码语言:javascript复制
Imports Microsoft.AspNetCore.Builder
Imports Microsoft.Extensions.Hosting

Module Program
    ''' <summary>
    ''' Web应用程序容器
    ''' </summary>
    Public builder As WebApplicationBuilder
    ''' <summary>
    ''' Web应用程序
    ''' </summary>
    Public app As WebApplication

    ''' <summary>
    ''' 应用入口
    ''' </summary>
    ''' <param name="args"></param>
    Sub Main(args As String())
        builder = WebApplication.CreateBuilder(args)
        ' 创建web应用
        app = builder.Build()
        If app.Environment.IsProduction() Then
            ' 多端口监听
            app.Urls.Add("http://localhost:8888")
        End If
        ' -------- 这里开始才是正式的MinAPI---
        ' GET请求测试
        app.MapGet("/Test", Function()
                                Return "Minimal Api 测试"
                            End Function).WithName("GetTest")
        ' 自定义扩展WebApi接口(方便独立写方法)
        app.ExtApiTest()
        ' 启动WebAPI应用
        app.Run()
    End Sub

End Module

好了今天的内容就这么多了!!!!!!!!

实列项目下载:

代码语言:javascript复制
链接:https://pan.baidu.com/s/1ojoFOk_JXigbC58rVPZxZw 
提取码:vbee 
--来自百度网盘超级会员V5的分享

0 人点赞