[英]Serving static content from Jersey resource method in a Spring Boot app
我为我的REST API使用了Spring Boot和JAX-RS的组合。 在我的Spring Java Application中,我的资源目录中有一个映像。 我想用URL为这张图片提供服务,应该是这样的:
localhost:8080/api/get/img/1/imageFileName.png
这样,我应该可以在Angular Frontend Application的img标签中使用以下URL:
<img src="localhost:8080/api/get/img/1/imageFileName.png"/>
所以问题是,我真的很想在我的FileSystem中拥有这些东西。 我绝对不想返回字节数组,但这是到目前为止我唯一能找到的东西。 到目前为止,这是我唯一能想到的代码:
@GET
@Path("get/img/1")
public String getFile() {
File file = Paths.get(".", "resources", "Mockup9EventsPageAsMember.png").normalize().toFile();
return file.toString();
}
显然,这只会返回到相应目录的路径,而不是我可以在img标签中使用的URL链接。
有什么建议可以告诉SpringBoot JAX-RS Application为我创建URL吗?
我可以为您尝试做的事情提供解决方案,但是绝对不建议这样做。 主要原因是缺少缓存。 您需要自己实现,如果让服务器提供所有静态内容,则服务器已经提供了该功能。
在Spring Boot + Jersey应用程序中,要能够提供静态内容,您需要具有spring-boot-starter-web
依赖项。 然后,您可以将所有静态资源放入src/main/resources/static
1中 。 如果将文件/images/foobar.png
放在该目录中,则可以通过localost:8080/images/foobar.png
。
如果你真的 真的想成为从资源的方法(这我再次强烈反对)的静态内容,您不必返回一个byte[]
您可以只返回File
或InputStream
。 或者,您可以使用StreamingOutput
(只需搜索一些示例-查找任何示例都应该没有问题)。 但是,再次使用此方法,您需要注意发送所有正确的缓存头,否则浏览器将不会缓存文件,而是在每次请求文件时就将它们提供服务,而这只会使用不必要的资源。
1.还有更多位置。 查看文件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.