我需要告诉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”?
答案 0 :(得分:1)
你想要做的就是让常规方法根据其执行返回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);
}