Nuget 安装包区别
Core2.2
Core3.0
IDocumentFilter区别
Core2.2
Core3.0
Core 2.2
app.UseSwagger(c =>
{
c.PreSerializeFilters.Add((swaggerDoc, httpReq) => swaggerDoc.Host = httpReq.Host.Value);
});
知识兔
Core 3.0
app.UseSwagger(c =>
{
c.PreSerializeFilters.Add((swagger, httpReq) =>
{
swagger.Servers = new List<OpenApiServer> { new OpenApiServer { Url = $"{httpReq.Scheme}://{httpReq.Host.Value}" } };
});
});
知识兔原使用到的info改变为OpenApiInfo
Microsoft.OpenApi 代替 Swashbuckle.AspNetCore.Swagger
Core 2.2
Core 3.0
Swagger 添加 token Header区别
Core 2.2
public class AddAuthTokenHeaderParameter : IOperationFilter
{
public void Apply(Operation operation, OperationFilterContext context)
{
if (operation.Parameters == null)
operation.Parameters = new List<IParameter>();
var attrs = context.ApiDescription.ActionDescriptor.AttributeRouteInfo;
//先判断是否是匿名访问,
var descriptor = context.ApiDescription.ActionDescriptor as ControllerActionDescriptor;
if (descriptor != null)
{
//var isAuthorized = descriptor..Select(filterInfo => filterInfo.Instance).Any(filter => filter is IAuthorizationFilter);
var actionAttributes = descriptor.MethodInfo.GetCustomAttributes(inherit: true);
bool isAnonymous = actionAttributes.Any(a => a is AllowAnonymousAttribute);
bool isAuthorized = actionAttributes.Any(a => a is AuthorizeAttribute);
//非匿名的方法,链接中添加accesstoken值
if (!isAnonymous && isAuthorized)
{
operation.Parameters.Add(new NonBodyParameter()
{
Name = "Authorization",
In = "header",//query header body path formData
Type = "string",
Default = "",
Required = true //是否必选
});
}
}
}
}
知识兔Core 3.0
public class AddAuthTokenHeaderParameter : IOperationFilter
{
public void Apply(OpenApiOperation operation, OperationFilterContext context)
{
if (operation.Parameters == null)
{
operation.Parameters = new List<OpenApiParameter>();
}
var attrs = context.ApiDescription.ActionDescriptor.AttributeRouteInfo;
//先判断是否是匿名访问,
var descriptor = context.ApiDescription.ActionDescriptor as ControllerActionDescriptor;
if (descriptor != null)
{
//var isAuthorized = descriptor..Select(filterInfo => filterInfo.Instance).Any(filter => filter is IAuthorizationFilter);
var actionAttributes = descriptor.MethodInfo.GetCustomAttributes(inherit: true);
bool isAnonymous = actionAttributes.Any(a => a is AllowAnonymousAttribute);
bool isAuthorized = actionAttributes.Any(a => a is AuthorizeAttribute);
//非匿名的方法,链接中添加accesstoken值
if (!isAnonymous && isAuthorized)
{
operation.Parameters.Add(new OpenApiParameter()
{
Name = "Authorization",
In= ParameterLocation.Header,//query header body path formData
Description="Token验证",
Schema = new OpenApiSchema() {
Type="string",
},
//In = "header",//query header body path formData
//Type = "string",
//Default = "",
Required = true //是否必选
});
}
}
}
}
知识兔