我正在通过带有请求正文的 HTTP GET 从 REST API 检索图像。
我已经设法通过这个测试使用node.js
and来检查返回的内容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 请求(您可以将其导入<script>
Vue 文件的一部分,如下所示:)import axios from "axios";
。
我正在使用vue-resource
(https://github.com/pagekit/vue-resource)假装它与 相同axios
,但事实并非如此,我花了一段时间才意识到这一点。