【发布时间】:2018-12-26 22:28:02
【问题描述】:
我正在通过带有请求正文的 HTTP GET 从 REST API 检索图像。
我已经设法使用node.js 和chai.js 通过这个测试检查返回的内容:
expect(res).to.have.header('Content-Type', 'image/jpeg');
expect(res).to.have.header('Access-Control-Allow-Origin', '*');
expect(res).to.have.header('Access-Control-Allow-Headers', 'Access-Control-Allow-Headers, Origin, X-Requested-With, Content-Type, Accept, Authorization');
expect(res).to.have.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS, HEAD');
expect(res).to.have.status(200);
expect(res.body).to.be.instanceof(Buffer); // the image content
在vue.js 文件中,我曾将图像附加到<img ...> HTML 标记,如下所示:
<img v-bind:src="urlImg">
然后在 javascript 部分中指定 URL,如下所示:
# this string representing the URL is returned by a function
this.urlImg = 'http://example.com/my_img.jpeg'
但在这种情况下,我无法提供 URL,因为 HTTP GET 期望正文返回内容类型为 image/jpeg 的图像。
我什至不确定这是可能的,我可能误解了内容类型image/jpeg 应该如何工作。我如何在vue.js 中执行此操作?有可能吗?有没有办法检查这个 HTTP 响应的图像内容,就像 Postman(Chrome 应用程序)之类的东西我无法检查假装将其视为文本/Json 的响应。
编辑
关于接受的答案:最后提出的解决方案(UPDATE 2)对我有用(使用 HTTP POST 为请求提供 JSON 正文)。确保使用 axios (https://github.com/axios/axios) 来执行 HTTP 请求(您可以将其导入 Vue 文件的 <script> 部分,如下所示:import axios from "axios";)。
我使用vue-resource (https://github.com/pagekit/vue-resource) 假装它与axios 相同,但事实并非如此,我花了一段时间才意识到这一点。
【问题讨论】:
-
我没有看到任何正确的问题,您的 url 可以返回除图像之外的其他内容,或者您将图像下载为缓冲区并且您想要显示它还是什么?
-
我正在尝试显示从后端下载为缓冲区的图像,它将其返回为
content-type=image/jpeg,谢谢
标签: javascript vue.js content-type imagejpeg