.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