8、vs2022_添加ASP.NET Web API项目并配置

 一、添加ASP.NET Core Web API项目

1、右键解决方案,依次选择:添加、新建项目
2、语言:C#,项目类型:Web或WebAPI,模版:ASP.NET Core Web API,命名WebApi_DEMO

3、选择目标框架

 ps:配置HTTPS默认是勾选的,也可取消

4、创建后,将WebApi_DEMO设为默认启动项,添加对CommonLib的引用

5、直接F5运行,如果是新系统首次运行会提示安装证书

6、运行界面如下

 7、依次点击:GET、Try it out、Execute,显示明细信息,API项目创建完成

 

 二、配置跨域,为前端提供服务

1、在Program.cs文件中配置跨域,红色代码部分

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
//配置Swagger
builder.Services.AddSwaggerGen();
//配置跨域策略
builder.Services.AddCors(options =>{
    options.AddPolicy("CorsPolicy", policy =>
    {
        policy.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod();
    });
});
var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseAuthorization();
//使用跨域策略
app.UseCors("CorsPolicy");
app.MapControllers();

app.Run();

 2、测试跨域,前端使用VUE

<template>
  <button type="button" @click="getWeather">天气预报</button>
</template>

<script setup>
// 安装axios,npm install axios
import axios from "axios";
const getWeather = async () => {
  console.log("显示天气预报......");
  const res = await axios.get("http://127.0.0.1:8888/WeatherForecast");
  console.log(res.data);
};
</script>

3、前端成功获取数据

 

 三、Swagger配置

1、【解决方法资源管理器】--【右击项目名称】-【属性】-【生成】-【输出】

选中文档文件-生成包含API文档的文件

默认地址为bin\Debug\net6.0\xxx.xml,也可以自定义地址,在指定地址新建个空的xml文件即可。

 

 2、在Program.cs文件中配置Swagger,修改AddSwaggerGen代码

//修改前
builder.Services.AddSwaggerGen();

//配置Swagger后
builder.Services.AddSwaggerGen(options => {
    #region 设置API文档信息
    var ApiName = "NetCore项目框架";
    options.SwaggerDoc("v1", new OpenApiInfo
    {
        Version = "v1",
        Title = $"{ApiName} 接口文档——Net 6",
        Description = $"{ApiName} HTTP API v1",
    });
    options.OrderActionsBy(o => o.RelativePath);
    #endregion
    #region 设置接口注释
    //using System.Reflection;
    //获取xml注释文件目录
    var xmlFilename = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
    var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFilename);
    //默认的第二个参数是false,这个是controller的注释,true时会显示注释,否则只显示方法注释
    options.IncludeXmlComments(xmlPath, true);
    var xmlModelname = "Medel.xml";//Model层的xml文件名
    var xmlModelPath = Path.Combine(AppContext.BaseDirectory, xmlModelname);
    #endregion
    #region 设置token
    //using Microsoft.OpenApi.Models;
    options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme(){
        Description = "在下框中输入请求头中需要添加Jwt授权Token:Bearer {token}(注意两者之间是一个空格)",
        Name = "Authorization",        //jwt默认的参数名称
        In = ParameterLocation.Header, //jwt默认存放Authorization信息的位置(请求头中)
        Type = SecuritySchemeType.ApiKey,
        BearerFormat = "JWT",
        Scheme = "Bearer"
    });
    options.AddSecurityRequirement(new OpenApiSecurityRequirement{
        {
            new OpenApiSecurityScheme{
                Reference = new OpenApiReference {
                    Type = ReferenceType.SecurityScheme,
                    Id = "Bearer"
                }
            },
            new string[] { }
        }
    });
    #endregion
});

3、在WeatherForecast控制器的Get()方法上,添加注释:天气预报

 

4、F5运行

 

posted @ 2021-10-09 16:53  生之韵  阅读(2641)  评论(0编辑  收藏  举报