使用 swashbuckle 的 AWS API Gateway Swagger

Abi*_*ali 4 swagger swashbuckle aws-api-gateway asp.net-core-webapi

我想从 ASP生成 AWS API Gateway swagger ( http://docs.aws.amazon.com/apigateway/latest/developerguide/api-as-lambda-proxy-export-swagger-with-extensions.html )。 NET Core Web API 使用 Swashbuckle.AspNetCore。

如果有人有解决方案,请告诉我。

注意:我遇到了如何使用 Swagger 生成选项(CORS)。并想做同样的事情。您能指导我吗?

谢谢,阿比达利

asi*_*dis 6

AWS Api 网关使用 swagger 中的 x-amazon-apigateway-* 扩展来配置您的 REST Api。

我认为目前还没有一个库可以通过 Swashbuckle 为您管理它,但 Swashbuckle 有一些接口,您可以实现这些接口来生成自定义 swagger 扩展,如Swashbuckle 文档中所述。例如,如果您想生成 x-amazon-apigateway-integration 扩展,您可以通过实现Swashbuckle.AspNetCore.SwaggerGen.IOperationFilter接口来实现:

    public class AwsApiGatewayIntegrationFilter : IOperationFilter
    {
        public void Apply(Operation operation, OperationFilterContext context)
        {
            operation.Extensions.Add("x-amazon-apigateway-integration",new
            {
                type = "aws",
                uri = "arn_to_your_aws_resource"
            });
        }
    }
Run Code Online (Sandbox Code Playgroud)

并在 swagger 生成器设置期间配置它:

services.AddSwaggerGen(c =>
{
     c.SwaggerDoc("v1", new Info
            {
                Version = "v1",
                Title = "My API",
                Description = "",
                TermsOfService = "",
            });
    c.OperationFilter<AwsApiGatewayIntegrationFilter>();
});
Run Code Online (Sandbox Code Playgroud)