webapi+swagger(dotnet第一篇)

.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

    {

        /// 

        /// 主程序入口  由此可以看出.net 5是控制台程序

        /// 

        /// 

        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.cs


    /// 

    /// 启动类,可以在Program.cs中进行配置自定义的启动类

    /// 

    public class Startup

    {

        /// 

        /// 使用依赖注入方式,注入配置信息(依赖注入)

        /// 

        /// 

        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.

        /// 

        /// 通常在配置服务方法里面,完成我们自定义的服务注入,插件的注入

        /// 

        /// 用于服务管理的集合,可以注入服务(如mvc、mssql、mysql、swagger等等自定义的服务)

        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.

        /// 

        /// 这个方法多用于配置.net的中间件

        /// 

        /// 

        /// 

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


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

本期GIT地址:https://gitee.com/hsyi/wdmd/tree/master/%E7%BD%91%E7%AB%99%E5%BC%80%E5%8F%91/%E5%9F%BA%E7%A1%80%E7%AF%87/.net%20core/1..net%20core+swagger

你可能感兴趣的:(webapi+swagger(dotnet第一篇))