一、添加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运行