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 @ 2024-05-13 15:07  -鹿-  阅读(1093)  评论(0)    收藏  举报