我正在使用一项宁静的服务,我观察到的是基于我看到同一端点的多个响应的请求。
例如:我请求使用 PDF 文档的一些参数进行 GET 调用。如果响应良好且内容类型为 application/pdf,则提供 pdf 文档。
如果文档不可用,则内容类型为 application/xml 并且响应给出错误代码、错误描述。
非常感谢任何输入!
谢谢,苏德希尔。
我正在使用一项宁静的服务,我观察到的是基于我看到同一端点的多个响应的请求。
例如:我请求使用 PDF 文档的一些参数进行 GET 调用。如果响应良好且内容类型为 application/pdf,则提供 pdf 文档。
如果文档不可用,则内容类型为 application/xml 并且响应给出错误代码、错误描述。
非常感谢任何输入!
谢谢,苏德希尔。
您可以使用 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);
}