首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用VB.NET 创建.NET6 Minimal Api[号称最小的Webapi](全网首发)

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

作者头像
一线编程
发布2022-01-14 15:59:22
3.6K1
发布2022-01-14 15:59:22
举报
文章被收录于专栏:办公魔盒办公魔盒

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文件,主启动文件

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只是为了简化代码

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文件到以下几句代码,其他都可以不要

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

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

实列项目下载:

链接:https://pan.baidu.com/s/1ojoFOk_JXigbC58rVPZxZw 
提取码:vbee 
--来自百度网盘超级会员V5的分享
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-01-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 办公魔盒 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档