node.js - 如何将图像作为 REST API 响应发送?要遵循哪些准则?
问题描述
我正在使用Node.js
and制作应用程序Express
。我可以使用 将文件保存到服务器multer
,但是在发送响应时我有两个选项,
- 以 JSON 格式发送图片的 URI,让前端调用这个来显示图片。
- 使用某种形式的编码(如 Base64)作为 JSON 的一部分发送图像数据。
由于我是 Web 开发的新手,我对使用哪个选项感到困惑。有人说第一个选项需要两次 API 调用,所以会很慢。虽然我也听说第二种选择会占用更多的内存资源。
选择时我还应该考虑哪些其他事项,还有其他方式可以将图像发送到客户端吗?
解决方案
选项1
因为不需要转换,所以不太复杂。这 2 个 API 调用不会减慢您的速度。图像大小更重要!!..文件可以直接在文件系统上存储/访问并从那里提供。文件下载也在短时间内实现。此外,base64 编码使文件大致~33%
(!!)更大,这对大文件的性能有巨大影响。
选项 2
Base 64 更安全,因为没有人可以如此处所述链接到您的网站。出于安全原因,您只需要使用 base64,或者如果您无法将图像数据作为二进制传输,则必须将其传输为字符串。
用例
- 如果这是您的私人非生产性项目,请尝试两者并使用您喜欢的一个。最后,您正在学习一些东西。保持一致很重要!
- 如果一个选项更适合您,只需按照您喜欢的方式实施即可。当您可能有更多经验或完成应用程序的核心部分时,您始终可以重构应用程序的给定部分。有时,在使用其中一种技术一段时间后,它会更清楚地使用哪种方法。
- 对于学习,有时最好继续进行,并实施一些可行的方法,并在出现问题时开始重构。而不是过度设计小
推荐阅读
- asp.net-core - .netcore asp-for decimal 丢失小数位
- javascript - 从 javascript 数组中按索引返回始终相同的颜色
- symfony - 3张桌子之间的Symfony关系
- javascript - 将 AJAX 回调返回到变量
- php - .htaccess 重写规则 Case inSensitive/ Ignore case in urls
- android - 并不总是检测到清单
- android - 使用片段和选项卡布局的可扩展列表视图
- java - 运行 testng.xml 时出现 TestNGException
- node.js - Node.js - 无法将 Apple 推送通知发送到开发设备以进行调试
- c++ - 在 Visual Studio MSVC 14.0 下使用 boost 程序选项断言失败