AWS API Gateway使用Swashbuckle招摇



我想生成AWS API Gateway Swagger(http://docs.aws.amazon.com/apigateway/latest/latest/developerguide/api-as-as-lambda-proxy-export-sport-sport-swagger--with-extensions.html(来自ASP.NET Core Web API,使用swashbuckle.aspnetcore。

请让我知道是否有人为此解决方案。

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

谢谢Abidali

aws api网关使用X-Amazon-apigateway-* swagger的扩展来配置您的REST API。

我认为已经有一个库可以通过swashbuckle为您管理它,但是Swashbuckle具有一些可以实现的接口来生成自定义的Swagger Extensions,如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"
            });
        }
    }

并在Swagger Generator设置中进行配置:

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

asidis答案的最新版本看起来像:(使用dotnet 3.0.0和swashbuckle 5.0.0.0-rc4(

public class AwsApiGatewayIntegrationFilter : IOperationFilter
{
    public void Apply(OpenApiOperation operation, OperationFilterContext context)
    {
        operation.Extensions.Add("x-amazon-apigateway-integration", new OpenApiObject
        {
            ["type"] = new OpenApiString("aws"),
            ["uri"] = new OpenApiString("uri_to_your_aws_resource"),
        });
    }
}

在startup.cs

services.AddSwaggerGen(c =>
{
      c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
      c.OperationFilter<AwsApiGatewayIntegrationFilter>();
);

最新更新