如何使用Axios捕获服务器代码错误

时间:2019-02-02 10:41:31

标签: javascript firebase vue.js google-cloud-functions axios

我已经向API发出了GET请求,该API拒绝了带有400错误(和“无效请求”)响应的GET请求;虽然我可以捕获和处理响应数据,但还有另一条我无法捕获的错误行:

  

获取https:// API地址 /测试400

我的代码如下:

try {
    let res = await this.axios.get(API)
    console.log(res.data)
} catch (error) {
    console.log(error.response.data)
}

我也确实尝试过将其作为一个承诺链(带有渔获物)-但结果相同,我一直认为将所有内容都包裹在try渔获物中可以解决问题。

我的API代码(托管在Firebase上)如下:

exports.test = functions.https.onRequest((request, response) => {
    cors(request, response, () => {
        if (request.method !== 'POST') {
            return response.status(400).send('Invalid request.')
        }
        response.status(200).send("Hello from Firebase!");
    })
});

第一行是当我发送POST请求时,其余的在GET请求之后返回: console

如何处理GET错误?它是从哪里来的?

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,则似乎您是在使用错误的URL调用Cloud Function。

您使用

 https://us-central1-xxxxxx.cloudfunctions.net/helloWorld

如您的问题的第一个版本中所示,

何时应使用

 https://us-central1-xxxxxx.cloudfunctions.net/test

因为您的Cloud Function是用

定义的
exports.test = functions.https.onRequest()

您将在此处找到相应的文档:https://firebase.google.com/docs/functions/http-events#invoke_an_http_function


评论后更新:

由于您具有以下代码,因此GET显示错误是正常的:

 if (request.method !== 'POST') {
   return response.status(400).send('Invalid request.')
 }

由于GET不是POST,因此请输入if并收到400错误...