如何解决使用通用响应结构时如何在 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 举报,一经查实,本站将立刻删除。