gpt4 book ai didi

firebase - 在Firebase Functions流程链中引发更高级别的捕获错误

转载 作者:行者123 更新时间:2023-12-03 08:20:15 24 4
gpt4 key购买 nike

语境

Firebase HTTP函数附带了预安装的依赖项,即body-parser,它将根据提供的内容类型来解析请求正文。

因此,如果我使用无效的有效负载调用Firebase HTTP函数,即:

POST http://localhost:5000/example-project/us-central1/example
content-type: application/json

{
test
}

Firebase将发送 400 Bad Request响应:
TTP/1.1 400 Bad Request
x-powered-by: Express
content-security-policy: default-src 'none'
x-content-type-options: nosniff
content-type: text/html; charset=utf-8
content-length: 1012
date: Tue, 10 Dec 2019 15:38:46 GMT
connection: close

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>...</pre>
</body>
</html>

在执行我的代码之前。

Google Cloud在 documentation中提到了这一点:

Cloud Functions automatically reads the request body, so you will always receive the body of a request independent of the content type. This means that HTTP requests should be considered to have been fully read by the time your code is executed. The nesting of ExpressJS apps should be used with this caveat—specifically, middleware that expects the body of a request to be unread might not behave as expected.



问题

由于我正在构建面向公众的API,因此存在以下几个问题:
  • 它返回text/html,这是在客户端处理的一团糟,并且;
  • 错误响应与我的代码处理的内部错误不一致,并且;
  • 它的描述性不足。



  • 是否可以处理Firebase HTTP Functions流程链中引发的更高级别的错误,或者这仅仅是文档中提到的警告之一?

    我知道,通过在请求中不指定请求内容类型,我可以解析它并抛出我喜欢的错误,但这只是糟糕的实现。

    我发现 Firebase documentation中有一个 HttpsError类,它似乎是引发这些响应的函数。它具有 toJSON方法,该方法将错误响应作为 application/json给出。

    最佳答案

    在执行代码之前,Cloud Functions会失败,因为客户端发送的值在技术上是错误的。因此,HTTP 400响应。不幸的是,您无法截获此消息,因为服务基础结构在提供的回调可以被调用之前就已经失效,并且没有用于处理此类错误的回调。

    关于firebase - 在Firebase Functions流程链中引发更高级别的捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59283893/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com