gpt4 book ai didi

c# - 来自枚举的 Swagger 预定义返回类型值

转载 作者:太空狗 更新时间:2023-10-29 23:44:53 25 4
gpt4 key购买 nike

我需要能够告诉 Swagger API 文档某个 API 将返回某个枚举的子集。

假设我有一个枚举 UserType { User_Not_Found、User_Blocked、User_Duplicated、User_Active ...等等}。

如果找到匹配,一个 api/users/search 可能会返回用户 FullName,如果没有找到匹配,可能会返回“User_Not_Found”。

return Request.CreateResponse(
success ? HttpStatusCode.OK : HttpStatusCode.BadRequest,
success ? fullName : UserType.User_Not_Found.ToString());

问题:我如何告诉 swagger,在这个特定的 API 上,如果找到匹配项,返回值可能会返回一个全名,如果找不到匹配项,则返回一个“User_Not_Found”?

最佳答案

您想要做的很像让常规方法根据其执行返回 2 种不同的类型。 这是不可能的

我认为如果找到用户,您应该使用 HttpStatusCode.OK 返回用户,否则使用 HttpStatusCode 401、403 或 404(根据您的需要)返回包含在响应中的自定义异常。这是您可以记录异常并且可以反射(reflect)在 Swagger UI 中的异常。然而,这反射(reflect)了 swagger.json 中的枚举。

    try
{
if (isUserFound)
{
return Request.CreateResponse(HttpStatusCode.OK, user);
}
throw new UserNotFoundException("User was not found");
}
catch (UserNotFoundException ex)
{
return Request.CreateResponse(HttpStatusCode.NotFound, ex);
}

关于c# - 来自枚举的 Swagger 预定义返回类型值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30316365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com