覆盖默认响应消息

Springfox 定义了一组默认响应消息,默认情况下应用于所有 API 控制器。这包括例如 201 - Created204 - No Content,以及几个 40x 响应。可能存在默认响应消息不适用于你的 API 的情况。你必须有内在的可能性来解决这个问题:

  • 你可以使用 @ApiResponses 注释来关闭默认响应消息并定义自己的响应消息。
  • 你可以全局定义自己的响应消息

转动默认响应消息

docket.useDefaultResponseMessages(false);

你现在可以在每个控制器级别设置单独的响应消息。例如

 @ApiResponses(value = {
        @ApiResponse(code=400, message = "This is a bad request, please stick to the API description", response = RestApiExceptionModel.class),
        @ApiResponse(code=401, message = "Your request cannot be authorized.", response = RestApiExceptionModel.class)
 })

设置你自己的默认响应消息

ModelRef errorModel = new ModelRef("RestApiExceptionModel");
List<ResponseMessage> responseMessages = Arrays.asList(
        new ResponseMessageBuilder().code(401).message("Unauthorized").responseModel(errorModel).build(),
        new ResponseMessageBuilder().code(403).message("Forbidden").responseModel(errorModel).build(),
        new ResponseMessageBuilder().code(404).message("NotFound").responseModel(errorModel).build());

docket.globalResponseMessage(RequestMethod.POST, responseMessages)
        .globalResponseMessage(RequestMethod.PUT, responseMessages)
        .globalResponseMessage(RequestMethod.GET, responseMessages)
        .globalResponseMessage(RequestMethod.DELETE, responseMessages);