如何使用C#.NET CORE在NSwag文档中添加自定义标题?
我需要添加自定义标题,但无法解决它。我正在尝试使用新的services.AddOpenApiDocument()而不是services.AddSwaggerDocument()。我想在我的整个API上添加这些自定义头,而不仅仅是一个方法或控制器。我试图添加一个操作处理器,但当我加载Swigger UI时,我收到以下错误“这是我在项目中实现的一个示例。对我来说,它工作正常: 接口“IOperationProcessor”的实现:如何使用C#.NET CORE在NSwag文档中添加自定义标题?,c#,asp.net-core,nswag,C#,Asp.net Core,Nswag,我需要添加自定义标题,但无法解决它。我正在尝试使用新的services.AddOpenApiDocument()而不是services.AddSwaggerDocument()。我想在我的整个API上添加这些自定义头,而不仅仅是一个方法或控制器。我试图添加一个操作处理器,但当我加载Swigger UI时,我收到以下错误“这是我在项目中实现的一个示例。对我来说,它工作正常: 接口“IOperationProcessor”的实现: 这终于对我起作用了Rico Suter直接提供的解决方案 试一试
这终于对我起作用了Rico Suter直接提供的解决方案 试一试 而不是
Type = NJsonSchema.JsonObjectType.String
(我认为类型在OpenAPI3中已被弃用)
非常感谢这个帖子上的原始答案 由于NSwag的更新,我不得不对上述答案做一些小的更新 以下内容适用于我的版本(NSwag.Core:13.1.2,NJsonSchema:10.0.24):
我看到您的代码和我的代码之间的区别在于,您使用的是services.AddSwaggerDocument(),它在Swagger v2.0中生成文档(您的代码确实可以使用),但我正试图利用新的services.AddOpenApiDocument生成OAS v3.0,这对我来说是一个突破。在这里上传一个完整的测试解决方案:但我在这里做了一个测试,将“services.addswagerDocument”替换为“services.AddOpenApiDocument”,在Swager UI中显示以下消息:“无法呈现此组件,请参阅控制台。“显然,“services.AddOpenApiDocument”语句有问题。您使用NSwag有什么特殊原因吗?否则,如果需要,您可以尝试使用“Swashback”,我有一个使用“Swashback”的完整的Swagger实现示例“。其中,我还在标题中包含了一个自定义参数。对于我在这里研究的内容:,有对OpenAPI 3.0.Hey Silvair的支持,感谢您的回复。我最终发布了Rico Suter给我的问题解决方案。我为Swagger UI项目创建了一个问题,希望他们能够解决非描述性错误:。另外,在写这篇文章的时候,我相信Swashback仍然在为他们的开放式API规范进行预发布,这就是为什么我要利用NSwag的原因。
internal static void ConfigureServices(IServiceCollection services, IConfiguration configuration)
{
// Register the Swagger services
services.AddSwaggerDocument(config =>
{
// Adds the "token" parameter in the request header, to authorize access to the APIs
config.OperationProcessors.Add(new AddRequiredHeaderParameter());
config.PostProcess = document =>
{
document.Info.Version = "v1";
document.Info.Title = "Title ";
document.Info.Description = "API para geração de Documentos Fiscais Eletrônicos (DF-e) do projeto SPED";
document.Info.TermsOfService = "None";
document.Info.Contact = new NSwag.SwaggerContact
{
Name = "Name",
Email = "Email ",
Url = "Url "
};
document.Info.License = new NSwag.SwaggerLicense
{
Name = "Use under LICX",
Url = "https://example.com/license"
};
};
});
}
Schema = new JsonSchema4 { Type = NJsonSchema.JsonObjectType.String }
Type = NJsonSchema.JsonObjectType.String
context.OperationDescription.Operation.Parameters.Add(
new OpenApiParameter
{
Name = "HEADER_NAME",
Kind = OpenApiParameterKind.Header,
Schema = new JsonSchema { Type = JsonObjectType.String },
IsRequired = true,
Description = "Description",
Default = "Default Value"
});