1

在 GCP 工作流中调用 http 端点时,只有 HttpStatus 200 被认为是成功的。

如何处理其他成功状态代码?201、202 等

示例中的示例工作流程:

- readItem:
    try:
      call: http.get
      args:
        url: https://example.com/someapi
        auth:
          type: OIDC
      result: APIResponse
    except:
      as: e
      steps:
        - knownErrors:
            switch:
              - condition: ${not("HttpError" in e.tags)}
                next: connectionProblem
              - condition: ${e.code == 404}
                next: urlNotFound
              - condition: ${e.code == 403}
                next: authProblem
        - UnhandledException:
            raise: ${e}
- urlFound:
    return: ${APIResponse.body}
- connectionProblem:
    return: "Connection problem; check URL"
- urlNotFound:
    return: "Sorry, URL wasn't found"
- authProblem:
    return: "Authentication error"

如果 api 端点 https://example.com/someapi返回除 200 状态代码之外的任何内容,则调用 connectionProblem。

如果它是 GET 或 POST 请求,这也是一样的。

处理此问题的最佳方法是什么?

4

1 回答 1

0

在 Google Workflows 的文档中没有提及如何处理其他 200 秒状态,所以我认为如果不将它们视为错误,这是不可能的。

这意味着为了做到这一点,您将需要添加一个额外的步骤来处理此状态作为错误处理策略,- condition: ${e.code == 201}例如。

或者,您可以在 Google 的问题跟踪器中打开功能请求,以便他们可以考虑对此类状态代码实施不同的处理,或者至少可以在文档中涉及更多详细信息。

于 2021-03-30T13:08:03.550 回答