【问题标题】:How to stop consumers from hitting invalid resources in APIGee API如何阻止消费者在 APIGee API 中访问无效资源
【发布时间】:2014-04-04 04:46:28
【问题描述】:

我有一个 Apigee 代理,它有两个资源(/resource1/resource2)。如果尝试访问/resource3。如何返回 404 错误而不是 Apigee 默认错误?

Apigee 显示以下故障字符串:

{
    "fault": {
        "faultstring": "The Service is temporarily unavailable",
        "detail": {
            "errorcode": "messaging.adaptors.http.flow.ServiceUnavailable"
        }
    }
}

谢谢

【问题讨论】:

    标签: apigee


    【解决方案1】:

    更好的解决方案是: 请务必在所有代理 API 的基本路径中定义一些内容

    创建一个名为“catchall”的附加代理 API,其基本路径为“/”,并且仅引发引发 404 的错误

    Apigee 从最长到最短的基本路径执行代理 API;包罗万象将最后运行并且总是抛出 404

    【讨论】:

      【解决方案2】:

      目前,apigee 中的流以这种方式工作 - 它解析您的 default.xml(在代理中)并尝试通过路径后缀(如“/resource1、/resource2”或动词或您可能有的任何其他条件。如果它没有找到任何匹配的条件,它会抛出类似上面的错误。

      您可以添加一个特殊流程,如果条件与您拥有的任何有效流程都不匹配,该流程将被启动。您可以在该流程中添加 raisefault 策略,并通过该流程添加自定义错误响应。

      【讨论】:

        【解决方案3】:

        我只是想澄清 Vinit 的回答。维尼特说:

        如果没有找到任何匹配的条件,就会抛出类似上面的错误。

        实际上,如果没有找到匹配的流条件,请求仍然会被发送到后端。你提到的错误:

        {
            "fault": {
                "faultstring": "The Service is temporarily unavailable",
                "detail": {
                    "errorcode": "messaging.adaptors.http.flow.ServiceUnavailable"
                }
            }
        }
        

        在没有匹配流的情况下尝试连接到后端后返回。

        Vinit 提出错误以创建 404 的解决方案是满足您要求的最佳解决方案。

        但是,在某些情况下,将所有流量传递到后端是合适的(例如,如果您不需要修改 Apigee 层的每个资源,并且您不想更新您的每次添加新 API 资源时的 Apigee 代理)。对于该用例,不匹配任何流条件都可以正常工作。

        【讨论】:

          猜你喜欢
          • 2013-12-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-02
          • 2019-08-27
          • 1970-01-01
          • 2023-02-07
          相关资源
          最近更新 更多