【问题标题】:how to serve static files to a front end via rest api?如何通过rest api将静态文件提供给前端?
【发布时间】:2016-04-02 14:57:40
【问题描述】:

在 Web 开发方面,我完全是菜鸟。我正在做一个附带项目。对于这个项目,我想开发一个 REST API 后端。我的一个朋友会使用 REST API 用 Angular js 开发一个前端。

作为后端开发的技术,我使用 Java、Spring 和 MySQL 数据库。我正在学习 REST 架构和实践。

所以我的问题如下:从后端向前端提供静态文件的最佳方式是什么?这些文件应该通过 HTML 图像标签显示。

谢谢。

【问题讨论】:

  • 好吧,你把它们放在你的 webapp 中,WEB-INF 下你想要的任何地方except,web 容器将为它们提供服务。如果它们位于 webapp 中的 foo/bar 目录下,它们的 URL 将为 /yourWebApp/foo/bar/some-image.jpg。
  • 好的,我的API只会在客户端执行get时返回URL?
  • 我不知道你的 API 应该做什么。但是,是的,您的 API 可以(应该)返回图像的 URL,如果这就是它的用途。
  • 关于您的要求的信息量有限,我想说您有几个选择。 1. Base64 编码文件并将数据字符串与您的 REST 服务响应负载一起传递,然后在前端重建图像。但是,我不建议这样做,因为它会带来大小和性能问题。 2. 在 Web 服务器上托管图像或从另一个服务器提供图像,并将 URL 传递给 REST 服务响应中的那些资源,然后可以在前端使用这些资源来拉取和呈现图像。这应该是要走的路。

标签: java spring rest spring-mvc


【解决方案1】:

在 Spring 中,/META-INF/resources/、/resources/、static/ 和 public/ 目录可用于提供静态内容。

所以你可以在 resources/ 目录下创建一个 static/ 或 public/ 目录并将你的静态内容放在那里。可以通过以下方式访问它们:http://localhost:3000/your-file.img。 (假设 server.port 为 3000)

<img src ="http://localhost:3000/your-file.img" />

您可以使用 application.properties 中的 spring.resources.static-locations 自定义这些目录。

例如:

spring.resources.static-locations=classpath:/custom/

现在您可以使用 resources/ 下的 custom/ 文件夹来提供静态文件。

参考:

https://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boothttps://spring.io/guides/gs/serving-web-content/

【讨论】:

  • 这个答案很好,除了http://localhost:3000/your-file.img。您应该使用模板语言和宏来获取正确的 URL。
猜你喜欢
  • 2015-12-19
  • 2011-01-16
  • 2015-03-18
  • 2019-02-22
  • 1970-01-01
  • 2011-10-20
  • 1970-01-01
  • 2019-11-02
  • 2011-01-27
相关资源
最近更新 更多