几天来,我一直在尝试从AWS API获得响应。如果我使用Postman查询它,效果很好,但是当我使用vue和axios编写代码时,它根本不起作用。所以,这就是我在哪里,什么有效,什么无效。
我有一个简单的“ getCryptos”方法,该方法从coinmarketcap.com API获取当前市场价值。这是为了证明使用AWS以外的其他API可以正常工作。该方法如下:
async getCryptos() {
await axios.get('https://api.coinmarketcap.com/v1/ticker/').then((resp) => {
this.response = resp.data;
}).catch((err) => {
this.error = err.message;
});
}
此方法很好用。调用时,代码转到 then 函数,并用收集的数据填充 this.response 。
现在,为了调用AWS API,我修改了代码以添加API密钥和GET查询的参数。下面的代码隐藏了确切的URL,API密钥和参数,但是您会明白的。我还在 then 和 catch 中将呼叫添加到 debugger em> 函数来查看代码的去向。
async getAWS() {
await axios.get('https://xxxxxxxxx.execute-api.us-west-2.amazonaws.com/development/api', {
headers: { 'x-api-key': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' },
params: {
Param: 'Value',
},
})
.then((resp) => {
this.response = resp.data;
debugger;
}).catch((err) => {
this.error = err.message;
debugger;
});
},
结果是代码通过 catch 函数,错误为Network error
,无论含义如何。
在Postman中使用相同的API密钥标头和相同的参数进行相同的精确查询就可以了。
所以,我的问题是,我做错了什么?为什么我可以调用coinmarketcap API但不能调用我拥有的AWS API?我知道它不是AWS API,而且我知道axios可以进行CORS调用,因为它可以与coinmarketcap一起使用。我想念什么?
答案 0 :(得分:0)
答案 1 :(得分:0)
我正在使用vue js,axios和aws apigateway处理同样的错误。我可以通过删除axios调用中的标头,启用cors并重新部署api来使其工作。希望它对您有用。