webapi+swagger(dotnet第一篇)

.NET 5 webapi swagger

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

本節任務

  • 創建webapi模板項目,并添加新的控制器訪問

  • 講解Startup.cs的作用

準備工作

  • 下載vs2019 https://visualstudio.microsoft.com/zh-hans/vs/ <font color=ffc107>Community版本</font><font color=8bc34a>別問,問就是免費夠用</font>

  • 安裝勾選需要使用的功能

    1. ASP.NET 和Web開發

    2. .NET Core 跨平臺開發

    3. 右下角【下載時安裝】改為【全部下載后再安裝】<font color=#8bc34a>別問,問就是快一些</font>

    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就是你的控制器名,后面<font color=8bc34a>Controller</font>為固定寫法

  • 復制以下代碼

    
      [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; }
    
          }
    
      }
    
    
  • 運行代碼后請求訪問,結果如下


    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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。