我正在使用swagger(1.5)和JAX-rs与Jersey(1.13)构建一些测试API,我试图实现异常处理。例如,我从DB(Elasticsearch)
接收结果时有以下代码@POST
@Path("/category")
@ApiOperation(value="returns products")
@Produces({ "application/json" })
public Response getPostCategories(
@ApiParam(value="keyphrase, required=true) @QueryParam("keyphrase") String keyphrase,
@ApiParam(value="category) @QueryParam("category") String category,
@Context SecurityContext securityContext)
throws WebApplicationException {
SearchRequest searchRequest = new SearchRequest();
searchRequest.setKeyphrase(keyphrase);
searchRequest.setCategory(category);
SearchCategoryQuery categoryQuery = new SearchCategoryQuery();
String searchResponse = null;
try
{
searchResponse = categoryQuery.searchCategory(searchRequest);
}
catch (WebApplicationException ex)
{
throw new WebApplicationException(Response.status(Status.BAD_REQUEST).entity("results no found").type(javax.ws.rs.core.MediaType.APPLICATION_JSON).build());
}
return Response.ok(searchResponse).build();
}
我需要的是接收我在每个异常中指定的错误消息。有什么想法吗?
答案 0 :(得分:2)
Swagger本身并不处理应用程序异常。
您需要创建自定义异常类(扩展java.lang.exception
)或使用现有类(如您已使用的WebApplicationException
)并使API定义抛出这些错误。所以基本上你需要使用Java / J2EE / Jersey来抛出适当的异常。 Swagger UI将为您显示它们。
检查this链接以获取有关REST异常处理的详细信息。