Spring RestTemplate Обработка нескольких ответов

Я пользуюсь спокойной службой. То, что я наблюдал, основано на запросе. Я вижу несколько ответов для одной и той же конечной точки.

Например: я запрашиваю вызов GET с некоторыми параметрами для документа PDF. если ответ хороший, а тип содержимого — application/pdf, он дает документ в формате pdf.

если документ недоступен, тип содержимого — application/xml, а ответ содержит код ошибки и описание ошибки.

Любой вклад очень ценится!

Спасибо, Судхир.


person Sudheer    schedule 02.12.2015    source источник
comment
В чем твоя ошибка? или ваш вопрос?   -  person reos    schedule 02.12.2015
comment
извините, мой вопрос заключается в том, как обрабатывать несколько ответов в зависимости от типа контента.   -  person Sudheer    schedule 02.12.2015


Ответы (1)


Вы можете использовать класс ResponseEntity Spring, вы можете настроить класс так, чтобы он возвращал объект, который вы хотите. Вы можете изменить тип контента и все, что хотите.

вот пример файла

@RequestMapping(value = URIConstansts.GET_FILE, produces = { "application/json" }, method = RequestMethod.GET)
public @ResponseBody ResponseEntity getFile(@RequestParam(value="fileName", required=false) String fileName,HttpServletRequest request) throws IOException{

    ResponseEntity respEntity = null;

    byte[] reportBytes = null;
    File result=new File("/home/arpit/Documents/PCAP/dummyPath/"+fileName);

    if(result.exists()){
        InputStream inputStream = new FileInputStream("/home/arpit/Documents/PCAP/dummyPath/"+fileName);
        String type=result.toURL().openConnection().guessContentTypeFromName(fileName);

        byte[]out=org.apache.commons.io.IOUtils.toByteArray(inputStream);

        HttpHeaders responseHeaders = new HttpHeaders();
        responseHeaders.add("content-disposition", "attachment; filename=" + fileName);
        responseHeaders.add("Content-Type",type);

        respEntity = new ResponseEntity(out, responseHeaders,HttpStatus.OK);
    }else{
        respEntity = new ResponseEntity ("File Not Found", HttpStatus.OK);
    }
    return respEntity;
}

Вот пример Json

@ResponseBody ResponseEntity<? extends AbstractResponse> createUser(@RequestBody String requestBody) {
    if(!valid(requestBody) {
        ErrorResponse errResponse = new ErrorResponse();
        //populate with error information
        return new ResponseEntity<ErrorResponse> (errResponse, HTTPStatus.BAD_REQUEST);
    }
    createUser();
    CreateUserSuccessResponse successResponse = new CreateUserSuccessResponse();
    // populate with more info
    return new ResponseEntity<CreateUserSuccessResponse> (successResponse, HTTPSatus.OK);
}
person reos    schedule 02.12.2015