0

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

例如:我请求使用 PDF 文档的一些参数进行 GET 调用。如果响应良好且内容类型为 application/pdf,则提供 pdf 文档。

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

非常感谢任何输入!

谢谢,苏德希尔。

4

1 回答 1

-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);
}
于 2015-12-02T19:51:20.717 回答