前后端分离情况下你们怎么处理相对路径

AI摘要
本文探讨前后端分离系统中图片地址存储与显示的三种方案:A方案后端返回相对路径和完整URL;B方案前端通过环境变量拼接;C方案使用ORM访问器自动处理。A方案简单直接,B方案前端可控,C方案后端统一管理。建议根据项目复杂度选择,C方案在维护性和一致性上更具优势。

比如头像或者其他文件、图片,数据库中储存了相对路径且业务必须储存相对路径(比如对象储存绑定的域名变动),在前后端分离的后台,我需要一个完整地址显示图片,提交修改的时候要存入相对路径,需要编辑时你们怎么做的

A方案,返回两个链接
user_picture_path abcd.png
user_picture_url storage.domain.com/abcd.png

B方案,前端处理
添加个VITE环境变量放存储地址,图片等组件二次封装,如果是相对链接拼接VITE

C方案,出入库自动添加去掉域名
laravel orm的访问器很容易一次性实现这一点

你们用哪个方案,各有什么优势,是否有更好的方案

:) wink
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

肯定是c方案 前端只负责使用完整地址是最不容易出错的

2天前 评论
唐章明 (楼主) 2天前
讨论数量: 8
Dcatplus-杨光

原来的字段 保存不变,model 里面追加一个字段,XXX_url, 返回完整地址。接口就用这个字段。

3天前 评论
qufo 3天前
Mutoulee

存储保持不变(相对路径),然后定义一个属性访问器,在访问器中组装绝对URL,不管是本地存储还是对象存储都可以处理。

2天前 评论

方案一和二都需要前端处理 ,如果是多域名处理起来就比较麻烦了,还是直接返回完整的url比较好

2天前 评论

我这是返回相对路径 ,但相对路径有一个统一前缀, 图片会在页面上自动加上当前域名, 被网关捕捉后重写返回完整地址

2天前 评论

肯定是c方案 前端只负责使用完整地址是最不容易出错的

2天前 评论
唐章明 (楼主) 2天前

数据存储diskpath,模型里定义url访问器,前端直接使用url

2天前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!