在指定其他响应类型时自动生成默认的200 OK响应

时间:2017-07-18 15:00:43

标签: c# api swagger swashbuckle

根据#216,Swashbuckle会自动生成200个成功响应作为默认行为,否则需要指定所有响应类型。

我希望能够在XML注释中为某些端点添加404/400错误响应,同时保留所有端点的200个成功响应,包括那些具有404/400错误响应的端点。

即使指定了错误响应,是否可以使Swashbuckle继续为所有端点自动生成200成功响应?

编辑:我添加了一个操作过滤器,以编程方式添加缺失的200个响应,这些响应解决了丢失的模型模式,但仍然没有真正回答我关于是否有保留Swashbuckle&#39的方法的原始问题; s自动生成200个成功响应

class CustomOperationFilter : IOperationFilter
{
    public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
    {
        var responses = operation.responses;
        if (responses.ContainsKey("404") || responses.ContainsKey("400"))
        {
            responses.Add("200", new Response()
            {
                description = "OK",
                schema = (schemaRegistry.GetOrRegister(apiDescription.ActionDescriptor.ReturnType))
            });
        }
    }
}

1 个答案:

答案 0 :(得分:1)

以下是向已指定错误响应的端点添加缺少的200个成功响应的解决方法:

class CustomOperationFilter : IOperationFilter
{
    public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
    {
        var responses = operation.responses;
        if (!responses.ContainsKey("200"))
        {
            if (apiDescription.ActionDescriptor.ReturnType != null)
            {
                responses.Add("200", new Response()
                {
                    description = "OK",
                    schema = (schemaRegistry.GetOrRegister(apiDescription.ActionDescriptor.ReturnType))
                });
            }
        }
    }
}