加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 从枚举中Swagger预定义的返回类型值

发布时间:2020-12-15 22:14:30 所属栏目:百科 来源:网络整理
导读:我需要能够告诉Swagger API文档某个API将返回某个枚举的子集. 想象一下,我有一个枚举UserType {User_Not_Found,User_Blocked,User_Duplicated,User_Active ……等等}. 一个api / users / search可能会在找到匹配时返回用户FullName,如果不匹配则返回“User_N
我需要能够告诉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(基于你想要的).这可以记录异常,并且可以反映在Swagger UI中.然而,这并不反映swagger.json中的Enum.

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);
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读