微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用通用响应结构时如何在 Swagger 中提供示例响应?

如何解决使用通用响应结构时如何在 Swagger 中提供示例响应?

我使用的是带有 Swashbuckle 5.6 的 asp.net core 3.1。我正在使用一个通用类 ApiResponse 来标准化响应结构。因此,对于 http 状态代码 404 和 500,我的响应结构将使用相同的类。

但是在生成的swagger文档中,我想为不同的响应代码提供不同的示例。如果我将 typeof(ApiResponse) 与 ProducesResponseType 或 SwaggerResponse 一起使用,它最终会为 404 和 500 状态代码显示相同的“示例值”。我尝试在 XML 文档中提供示例。但这并不伴随架构。

ApiResponse 类结构与以下链接中使用的相同。 https://www.devtrends.co.uk/blog/handling-errors-in-asp.net-core-web-api

public class ApiResponse
{
    public int StatusCode { get; }

    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
    public string Message { get; }

    public ApiResponse(int statusCode,string message = null)
    {
        StatusCode = statusCode;
        Message = message ?? GetDefaultMessageForStatusCode(statusCode);
    }

    private static string GetDefaultMessageForStatusCode(int statusCode)
    {
        switch (statusCode)
        {
            ...
            case 404:
                return "Resource not found";
            case 500:
                return "An unhandled error occurred";
            default:
                return null;
        }
    }
}

404 和 500 的 statusCode 和 Message 将不同。

我也有一个与 Ok Response 类似的问题。通过使用泛型,我可以获得类类型的正确示例。但对于状态码和消息,我无法提供具体值。

    public class ApiResponSEOk<T> : ApiResponse
    {
        public T Result { get; }

        public ApiResponSEOk()
        {

        }

        public ApiResponSEOk(T result,string message = null)
            : base(200,message)
        {
            Result = result;
        }

    }

请让我知道在使用相同类型的响应时如何提供单独的示例。

谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。