Net8 webAPI 创建(傻瓜式入门)
前沿
学不止境 ( 还是用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[]{ } }

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 });
代码
然后就看到
这样就设置了登陆的token
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效