zoukankan      html  css  js  c++  java
  • 后端入门篇(一) .NET 5 webapi swagger

    .NET 5 webapi swagger

    在.net5里面创建webapi+swagger是模板里面直接生成的,不需要我们有过多的操作就可以完成

    本节任务

    • 创建webapi模板项目,并添加新的控制器访问
    • 讲解Startup.cs的作用

    准备工作

    • 下载vs2019 https://visualstudio.microsoft.com/zh-hans/vs/ Community版本别问,问就是免费够用

    • 安装勾选需要使用的功能

      1. ASP.NET 和Web开发

      2. .NET Core 跨平台开发

      3. 右下角【下载时安装】改为【全部下载后再安装】别问,问就是快一些

      4. vscode下载插件Rest Client(用于访问请求接口的工具,相应的可以使用postman等自己选择)

    创建项目

    • 在模板中选择【ASP.NET Core Web API】

    • 配置新项目-项目名使用默认名称

    • 其他信息-.NET 5并取消勾选【配置HTTPS(H)】

    • 点击创建

    • 按F5运行项目即可

    在.net 5中,当你选择api模板创建项目时,我们节省了很多功能,比如swagger的配置,但是只是基本的配置,复杂用法以后在讲

    目录结构讲解

    • Properties(该文件夹是项目的属性文件夹)

      • launchSettings.json(日常使用时,可以设置项目启动的端口、默认地址、环境变量等)
    • 依赖项

      • 包(使用的nuget三方包)

      • 分析器(框架的分析器)

      • 框架(选型的微软框架包)

      • 项目(平时我们引用自己其他项目的dll)

    • Controllers(控制器,可以简单理解为外界访问我们的入口,比如各种接口/api/user/get 中的user就是UserControllers)

    • appsettings.json(默认配置文件,存放一些我们业务或者系统使用的配置信息,默认使用,但是也可以在项目中进行配置修改)

    • Program.cs(程序启动的位置,在这里启动Startup文件,也可以更换配置)

    • Startup.cs(一般情况一些服务、中间件等配置在该类完成)

    Program.cs

        public class Program
        {
            /// <summary>
            /// 主程序入口  由此可以看出.net 5是控制台程序
            /// </summary>
            /// <param name="args"></param>
            public static void Main(string[] args)
            {
                // 通过调用IHostBuilder方法配置服务中间件后构建并运行kestrel
                CreateHostBuilder(args).Build().Run();
            }
    
            public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<Startup>();// 使用的启动类  可以自定义更改
                    });
        }
    

    Startup.cs

        /// <summary>
        /// 启动类,可以在Program.cs中进行配置自定义的启动类
        /// </summary>
        public class Startup
        {
            /// <summary>
            /// 使用依赖注入方式,注入配置信息(依赖注入)
            /// </summary>
            /// <param name="configuration"></param>
            public Startup(IConfiguration configuration)
            {
                Configuration = configuration;
            }
    
            public IConfiguration Configuration { get; }
    
            // This method gets called by the runtime. Use this method to add services to the container.
            /// <summary>
            /// 通常在配置服务方法里面,完成我们自定义的服务注入,插件的注入
            /// </summary>
            /// <param name="services">用于服务管理的集合,可以注入服务(如mvc、mssql、mysql、swagger等等自定义的服务)</param>
            public void ConfigureServices(IServiceCollection services)
            {
                
                services.AddControllers();
                services.AddSwaggerGen(c =>// 我们可视化接口文档服务
                {
                    // 里面还有很多的配置,具体可以看看微软官方文档或者swagger文档  微软:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-5.0&tabs=visual-studio
                    c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebApplication1", Version = "v1" });
                });
            }
    
            // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
            /// <summary>
            /// 这个方法多用于配置.net的中间件
            /// </summary>
            /// <param name="app"></param>
            /// <param name="env"></param>
            public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
            {
                //判断 当前的环境变量,开发环境还是生产环境
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                    app.UseSwagger();// 启用swagger中间件
                    app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "WebApplication1 v1"));// 对swaggerui界面的中间件启用
                }
    
                app.UseRouting();
    
                app.UseAuthorization();// 弃用授权中间件  以后还有一个  认证中间件  jwt的时候会提及
    
                app.UseEndpoints(endpoints =>// 这个相当于是mvc中的路由  详情:https://docs.microsoft.com/zh-cn/aspnet/core/web-api/?view=aspnetcore-5.0
                {
                    endpoints.MapControllers();
                });
            }
        }
    

    创建ValuesController

    • 右键Controllers文件夹->新建项

    • 选择【API控制器 - 空】

    • 默认名ValuesController.cs其中Values就是你的控制器名,后面Controller为固定写法

    • 复制以下代码

      
        [Route("api/[controller]")]
      
        [ApiController]
      
        public class ValuesController : ControllerBase
      
        {
      
            /// <summary>
      
            /// 这是get方法
      
            /// </summary>
      
            /// <returns></returns>
      
            [HttpGet]
      
            public string Get()
      
            {
      
                return "返回get";
      
            }
      
            /// <summary>
      
            /// 获取用户
      
            /// </summary>
      
            /// <param name="id"></param>
      
            /// <returns></returns>
      
            [HttpGet("user")]
      
            public User GetUser(string id)
      
            {
      
                if (id == "1")
      
                {
      
                    return new User { Name = "张三", Age = 18, Address = "成都" };
      
                }
      
                return null;
      
            }
      
            /// <summary>
      
            /// 
      
            /// </summary>
      
            /// <param name="user"></param>
      
            /// <returns></returns>
      
            [HttpPost]
      
            public User Post([FromBody] User user)
      
            {
      
                return user;
      
            }
      
            /// <summary>
      
            /// 提交数据
      
            /// </summary>
      
            /// <param name="user"></param>
      
            /// <returns></returns>
      
            [HttpPut]
      
            public User Put([FromBody] User user)
      
            {
      
                return user;
      
            }
      
            /// <summary>
      
            /// 用户模型
      
            /// </summary>
      
            public new class User
      
            {
      
                /// <summary>
      
                /// 姓名
      
                /// </summary>
      
                public string Name { get; set; }
      
                /// <summary>
      
                /// 年龄
      
                /// </summary>
      
                public int Age { get; set; }
      
                /// <summary>
      
                /// 地址
      
                /// </summary>
      
                public string Address { get; set; }
      
            }
      
        }
      
      
    • 运行代码后请求访问,结果如下

    • rest client如果有多个请求,中间使用三个#号隔开,点击send request就可以进行测试

    本期GIT地址:.net 5 webapi

  • 相关阅读:
    《大话设计模式》的一些总结
    一个仿jdkd的动态代理
    一道笔试题(构造数组)
    c# 汉字转拼音
    IDEA常用插件盘点(香~~)
    服务器概念、应用服务器盘点大科普
    创建一个简单的Struts 2程序
    JAVA(Object类、Date类、Dateformat类、Calendar类)
    DQL查询语句和约束
    MySQL操作语句
  • 原文地址:https://www.cnblogs.com/hsyi/p/14590986.html
Copyright © 2011-2022 走看看