我需要能够告诉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); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。