В Джерси, как вернуть объект с кодом ответа 400, отличным от объекта ответа 200

#rest #web-services #jersey #client

#rest #веб-сервисы #джерси #клиент

Вопрос:

Я новичок в Джерси и в REST в целом, так что это может быть глупый вопрос….

В моем коде я отправляю запрос ( TemplateValidationRequest ), чтобы попытаться проверить объект. Если объект не проходит проверку, я хочу вернуть строку. Как мне это сделать?

Во втором фрагменте кода внизу вы можете видеть, что я ищу TemplateValidationResponse объект. Как я могу изменить свой код, чтобы:

  1. Я могу вернуть строку и
  2. Я могу получить строку вместо TemplateValidationResponse объекта.

Возможно ли это?

 @POST
@Path("validate/modelTemplate")
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
@Operation(
    summary = "Convert model template to AMBOS interaction model and validate the result",
    tags = { BLUEPRINTS_TAG },
    requestBody = @RequestBody(
        content = @Content(
            schema = @Schema(
                implementation = TemplateValidationRequest.class
            )
        )
    ),
    responses = {
        @ApiResponse(
            responseCode = "200",
            description = "Success.",
            content = @Content(
                schema = @Schema(
                    implementation = TemplateValidationResponse.class
                )
            )
        ),
        @ApiResponse(
            responseCode = "400",
            description = "Failure",
            content = @Content(
                schema = @Schema(
                    implementation = String.class
                )
            )
        )
    }
)
@CustomerIdentityRequired
@AcceptsLanguageRequired
@AAA(serviceName = SERVICE_NAME, operationName = BLUEPRINTS_GET)
ModelTemplateValidationResponse validateModelTemplate(TemplateValidationRequest);
  

 

 fun validateModelTemplate(modelTemplate: InteractionModel,
                          sampleData: Map<String, Any>): TemplateValidationResponse {
  val request = TemplateValidationRequest()
  request.modelTemplate = modelTemplate
  request.sampleData = sampleData
  return temp.validateModelTemplate(request)//this is where I call the above code
    //If this request fails and results in a 400 error, I want to get a String
}
  

Ответ №1:

Как насчет чего-то вроде:

 public Class YourResponse {
    private boolean isError;
    private String setThisWhenThereIsError;
    private YourObject setThisWhen200;
}