代码之家  ›  专栏  ›  技术社区  ›  Emily Siu

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

  •  1
  • Emily Siu  · 技术社区  · 7 年前

    根据 #216 ,Swashback将自动生成200个成功响应作为默认行为,或者期望指定所有响应类型。

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

    即使指定了错误响应,是否可以使Swashback继续为所有端点自动生成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 回复  |  直到 7 年前
        1
  •  1
  •   Emily Siu    7 年前

    以下是一种解决方法,可以将缺失的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))
                    });
                }
            }
        }
    }