Fork me on GitHub

后端入门篇(一)- .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

posted @ 2021-03-29 09:20  Hsyi  阅读(1303)  评论(0编辑  收藏  举报