.NET 5 webapi swagger
在.net5里面創建webapi+swagger是模板里面直接生成的,不需要我們有過多的操作就可以完成
本節任務
- 創建webapi模板項目,並添加新的控制器訪問
- 講解Startup.cs的作用
准備工作
-
下載vs2019 https://visualstudio.microsoft.com/zh-hans/vs/ Community版本別問,問就是免費夠用
-
安裝勾選需要使用的功能
-
ASP.NET 和Web開發
-
.NET Core 跨平台開發
-
右下角【下載時安裝】改為【全部下載后再安裝】別問,問就是快一些
-
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