概述
平常做项目使用mvc+webapi,采取前后端分离的方式,后台提供API接口给前端开发人员。这个过程中遇到一个问题后台开发人员怎么提供接口说明文档给前端开发人员。为了解决这个问题,项目中引用swagger(我比较喜欢戏称为“丝袜哥”)。
列出所有API控制器和控制器描述
问题
那么既然是api,肯定涉及到安全验证问题,那么怎么在测试文档增加添加Token安全验证呢;
代码实现
下面我们来看看
1、定义swagger请求头
using Microsoft.AspNetCore.Authorization;using Swashbuckle.AspNetCore.Swagger;using Swashbuckle.AspNetCore.SwaggerGen;using System.Collections.Generic;using System.Linq;using System.Reflection;namespace CompanyName.ProjectName.HttpApi.Host.Code{
/// /// swagger请求头 /// public class HttpHeaderOperationFilter : IOperationFilter {
/// /// /// /// /// public void Apply(Operation operation, OperationFilterContext context) {
#region 新方法 if (operation.Parameters == null) {
operation.Parameters = new List(); } if (context.ApiDescription.TryGetMethodInfo(out MethodInfo methodInfo)) {
if (methodInfo.CustomAttributes.All(t => t.AttributeType != typeof(AllowAnonymousAttribute)) && !(methodInfo.ReflectedType.CustomAttributes.Any(t => t.AttributeType == typeof(AuthorizeAttribute)))) {
operation.Parameters.Add(new NonBodyParameter {
Name = "Authorization", In = "header", Type = "string", Required = true, Description = "请输入Token,格式