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
        });
View Code
复制代码

 

代码

然后就看到

 

这样就设置了登陆的token

 

posted @   -鹿-  阅读(647)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示