前沿
学不止境 ( 还是用windows 学习吧 mac 太不友好了)
让我来新建个Net8 webapi core
然后看到这个页面
选择不适用顶级语句
然后配置你的目录
然后打开vs studio 看到编辑页面
可以在controllers 里面创建新的.cs请求 比如我新建了firstController
写入get put post delete
using Microsoft.AspNetCore.Mvc; namespace yanfanWebNetAPi.Controllers; [ApiController] [Route("[controller]")] public class FirstController : ControllerBase { private readonly ILogger<FirstController> _logger; public FirstController(ILogger<FirstController> logger) { _logger = logger; } //[HttpGet(Name = "GetWeatherForecast")] [HttpGet] public IEnumerable<WeatherForecast> GetInfo() { return Enumerable.Range(1, 5).Select(index => new WeatherForecast { Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), TemperatureC = Random.Shared.Next(-20, 55), }) .ToArray(); } [HttpPost] public IEnumerable<WeatherForecast> GetPost() { return Enumerable.Range(1, 5).Select(index => new WeatherForecast { Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), TemperatureC = Random.Shared.Next(-20, 55), }) .ToArray(); } [HttpPut] public IEnumerable<WeatherForecast> GetPut() { return Enumerable.Range(1, 5).Select(index => new WeatherForecast { Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), TemperatureC = Random.Shared.Next(-20, 55), }) .ToArray(); } [HttpDelete] public IEnumerable<WeatherForecast> GetDelete() { return Enumerable.Range(1, 5).Select(index => new WeatherForecast { Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), TemperatureC = Random.Shared.Next(-20, 55), }) .ToArray(); } }
然后运行你的代码
然后你会发现谷歌浏览器运行了
这样就形成了你的接口
我只能说66666666
RestFul api
有一个唯一的url 地址:操作某一个资源的
把上面的firstController 改为 FirstUserController
一个控制器里面有多个get 请求
请这样写
[HttpGet] public IEnumerable<WeatherForecast> GetInfo() { return Enumerable.Range(1, 5).Select(index => new WeatherForecast { Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), TemperatureC = Random.Shared.Next(-20, 55), }) .ToArray(); } [HttpGet] [Route("{userId:int}")] //特性路由 public IEnumerable<WeatherForecast> GetUser(int userId) { return Enumerable.Range(1, 5).Select(index => new WeatherForecast { Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), TemperatureC = Random.Shared.Next(-20, 55), }) .ToArray(); }
上面添加这个
[Route("{userId:int}")] //特性路由
这样就可以让一个控制器有多个相同的get请求
你可以看到
swagger注释
只要在你的代码里面写/// 就有代码提示了
/// <summary> /// Delete /// </summary> /// <returns></returns> [HttpDelete] public IEnumerable<WeatherForecast> GetDelete() { return Enumerable.Range(1, 5).Select(index => new WeatherForecast { Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), TemperatureC = Random.Shared.Next(-20, 55), }) .ToArray(); }
swagger版本控制
根目录选择最上面 右键
选择类库
正在你的Program.cs 下的
#region 版本控制
foreach(FieldInfofield in typeof(ApiVersionInfo).GetFields())
{
option.SwaggerDoc(field.Name,newOpenApiInfo()
{
Title=$"{field.Name}:我的CoreWebApi~",
Version = field.Name,
Description= $"coreWebApi{field.Name版本"
}
) ;
#endregion
app.UseSwaggerUI();里面写入
app.UseSwaggerUI(option =>{
foreach(FieldInfofieldintypeof(ApiVersionInfo).GetFields())
{
option.SwaggerEndpoint(s"/swagger/(field.Name)/swagger.json",
$"(field.Name}"
);
}
});
然后在你的页面版本
[ApiExplorerSettings(GroupName = nameof(ApiVersionInfo.V1))]
然后再运行就可以看到版本了
swagger Token传值
#region 支持token产值 { option.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme() { Description = "请输入token,格式为Bearerxxxxxxxx(注意中间必须有空格)", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.ApiKey, BearerFormat = "JWT", Scheme = "Bearer" }); } #endregion
添加安全代码
//添加安全要求 option.AddSecurityRequirement(new OpenApiSecurityRequirement { { new OpenApiSecurityScheme { Reference = new OpenApiReference() { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }, new string[]{ } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
builder.Services.AddSwaggerGen(option => { #region 支持Swagger版本控制 { //foreach (FiledInfo field in typeof(ApiVersionInfo).GetFields()) //{ //} //foreach (var item in typeof(ApiVersionInfo).GetFields()) //{ //} } #endregion #region 支持token产值 { option.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme() { Description = "请输入token,格式为Bearerxxxxxxxx(注意中间必须有空格)", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.ApiKey, BearerFormat = "JWT", Scheme = "Bearer" }); //添加安全要求 option.AddSecurityRequirement(new OpenApiSecurityRequirement { { new OpenApiSecurityScheme { Reference = new OpenApiReference() { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }, new string[]{ } } }); } #endregion });View Code
代码
然后就看到
这样就设置了登陆的token
标签:webAPI,index,Name,傻瓜式,IEnumerable,Net8,new,public,option From: https://www.cnblogs.com/yf-html/p/18188728