我有一个Spring Boot API服务,其他网站和移动应用程序将此API称为数据和图像。 图像存储在文件系统中,文件存储在数据库中。 我正在寻找在API响应中返回图像URL的最佳做法。
样本数据库记录
+-----+-------+-----------------+
| Id | Name | profile_img_url |
+-----+-------+-----------------+
| 1 | John | /image/john.jpg |
| 2 | Jane | /image/jane.jpg |
| 3 | Doe | /image/doe.jpg |
+-----+-------+-----------------+
例如,我有一个成员API。
https://example.com/get/member/id
此API将返回JSON,其中包含成员图片网址
我应该以绝对URL还是相对URL返回profile_img_url
这是我的想法
使用相对URL回复
{
"name" : "John","profile_img_url": "/image/john.jpg",}
- 在API代码中,无需担心基本URL(域名),调用网站或移动设备 应用需要照顾基本网址。
- 在API中,我只需读取并发送配置文件img url,而无需花费时间来连接域名和文件名 设置绝对URL,因此响应应该很快。
使用绝对URL回复
{
"name" : "John","profile_img_url": "https://example.com/image/john.jpg",}
-
在我的API中,我需要找到主机名并连接文件 导致API服务器上不必要负载的每个请求的路径。
-
如果我要返回成员列表,则需要从数据库中获取并循环 通过列表并设置绝对URL。这可以使API 反应较慢。
-
我还需要确保API服务器在代理或负载平衡之后, 可以检测域名/主机名并将其用于连接
-
正在呼叫网站或移动应用,无需担心基本URL /域 名称
-
我不必教育移动团队或客户端应用开发团队 关于如何获取个人资料图片
-
将来,如果我决定从其他域或其他服务器来处理我的图像 子域,我不必通知其他团队
如果它是一个简单的网站(前端和后端在一起),则我认为相对URL对于一个网站就足够了,除非您正在运行需要非常高性能优化的高流量网站。
就我而言,我仅运行后端API。前端将是我们公司或合作伙伴的其他应用程序/移动应用程序
您也可以阅读this页,尽管它与我的问题没有直接关系,但它讨论的是与解耦系统中的URL有关的问题
那么,API响应中的最佳做法是绝对URL还是相对URL。