具有不同返回类型的Java REST GET方法

时间:2018-02-13 12:56:01

标签: java rest spring-boot

我想在Spring Boot应用程序中实现REST方法GET,该应用程序提供不同类型的文件。

例如,它可以返回PDF文档,JPEG图像,TIF图像等,实际上它是有的。

怎么做? 我应该将返回类型指定为Object:

@GetMapping("/document")
public Object getDocument() { 
   file = ... logic to retrieve a specific file (PDF, JPEG, TIF, ...)
   return file;
}

客户端如何处理返回的值,以便从中获取正确的文件类型?

干杯

3 个答案:

答案 0 :(得分:0)

您应该创建新类来指定响应。它应该是这样的:

public class Response{
    public String type;
    public Byte[] fileContent
    ... getter/setter/constructor etc
}

对于小文件(图像或pdf),这个想法应该没问题。对于大文件,它变得更加复杂

答案 1 :(得分:0)

到春天,我认为你的意思是spring-mvc。 你可以做这样的事情

@RequestMapping(value = "{fileName:.+}", method = RequestMethod.GET)
@ResponseBody
public void getImageSling(@PathVariable String fileName, HttpServletResponse response)throws IOException {

    //read the file in byte[]
    //evaluate content type you want to set
    response.setContentType(contentType);
    response.getOutputStream().write(byteStream.getByteStream());
    response.getOutputStream().flush();
}

答案 2 :(得分:0)

为了为不同的客户端请求提供不同的视图表示,Spring MVC中存在视图解析器的概念。

特别需要根据支持的文档扩展名类型配置ContentNegotiationViewResolver和朋友。

您可以找到更多herehere