Spring RestTemplate处理多个响应

时间:2015-12-02 04:07:16

标签: spring spring-rest

我正在使用一项宁静的服务,我观察到的是基于请求我看到同一个终点的多个响应。

对于Ex:我使用PDF文档的一些参数请求GET调用。 如果响应是好的,内容类型是application / pdf,那么它会给出一个pdf文档。

如果文档不可用,则内容类型为application / xml,响应正在给出错误代码,错误描述。

非常感谢任何输入!

谢谢, Sudheer。

1 个答案:

答案 0 :(得分:-1)

你可以使用Spring的ResponseEntity类,你可以设置类来返回你想要的对象。您可以更改内容类型以及所需的一切。

这里有一个文件的例子

@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);
}