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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM