这个项目是前后端分离的,后端用的 Django 。现前端有个需求是一篇新闻稿需要 [标题+摘要+正文+一张图片] 这些内容。
我现在只会以文件下载也就是 [ content-type="application/octet-stream"] 返图片给前端(这个方式添加不了其他额外的信息了,至少我不会),标题等其他文字内容通过另一个接口返给前端,这样获取一篇新闻稿就需要两次请求。问能不能只用一次的方式获得这些所有信息?
另: 现在暂时有一个想法是,前端的
<img src="..."/>
这种方式,我可以将 src 参数在返回标题摘要时一同给到前端。但这个 src 对于后端的请求方式或者实现本质是什么?是直接用 http get 方式请求这个 URL 吗,自己写了个简单 html 页面打开发现它并没有对我的后端发出请求,所以比较疑惑。。
1
debuggerx 2021-03-12 11:49:55 +08:00
现在这样才是合理的,想搞成一个接口返回信息和图片内容,看上去是减少了一次请求,实际上却是更浪费的。
|
2
fankcoder 2021-03-12 11:57:03 +08:00
给他返回图片链接呀
|
3
IVeverKB OP |
4
Latin 2021-03-12 12:03:59 +08:00
|
5
Latin 2021-03-12 12:04:49 +08:00
const img= document.createElement('img');
img.src = URL.createObjectURL(blob); |
6
superrichman 2021-03-12 12:17:19 +08:00 via iPhone
把图片转成 base64 插到 img 标签的 src 里面,这样就只有一个请求了,缺点是图片大的话网页加载很慢。
我觉得你真正需要的可能是开启 http2 |
7
julyclyde 2021-03-12 12:18:20 +08:00
https://www.thesitewizard.com/html-tutorial/embed-images-with-data-urls.shtml
用<img src=data 语法可以 这绝对是 邪教!! |
8
ch2 2021-03-12 12:19:41 +08:00
img 标签可以加载源站的图片,不需要你亲自在后端下载一遍再从自己的服务器传给它
|
9
Vegetable 2021-03-12 12:22:13 +08:00
当然可以,比如
图片转成 base64 放到 json 里边 [不推荐] 图片放在静态文件夹交给 nginx 处理,接口返回图片地址 [推荐] |
10
HashV2 2021-03-12 12:26:22 +08:00
你返回的数据包含 img 地址就行了
前端能通过地址拿到图片就行 |
11
eason1874 2021-03-12 12:29:05 +08:00
这种情况一般用 JSON,分 title, excerpt, content, thumbnail,thumbnail 里的是图片文件链接。
对 API 服务器来说也算只有一个请求,因为图片走另外的文件服务器。如果只能走 API 服务器,你可以在接受 API 请求的用 http2 push 把图片一起推过去,这需要客户端支持。 |
12
imn1 2021-03-12 12:30:21 +08:00
如果图片是入库的,就是字节数据,转 base64 随文章一起发过去
如果图片是文件方式保存的,路径读取权限是所有人,发路径过去就行;如果权限并非所有人,或者不想公开真实路径,这就要换思路了,可以读取后按 base64 发,或者用不占 io 的方式在 web 路径做个映射,然后发这个路径 一般情况下,建站时就要想好文件读取的权限和路径设置,避免上述麻烦事徒增虚耗 |
13
learningman 2021-03-12 12:30:53 +08:00
img 地址有防盗链不?有的话楼上说的都不行
|
14
rationa1cuzz 2021-03-12 13:25:11 +08:00
一般不会一起返回的,万一图片很大加载很慢的,我们看到的大部分网站都是内容图片分开请求,图片可以是个 url (静态资源),或者单独接口请求图片(字节 /base64 字符串)如果是<img src="..."/> 塞的建议也是路径( url ),而不是 base64 字符串(太大了)
|
15
izoabr 2021-03-18 14:46:59 +08:00
11L 正解
|