【问题标题】:Block undefined routes/paths in apigee阻止 apigee 中未定义的路线/路径
【发布时间】:2022-07-29 17:53:42
【问题描述】:

我在 Apigee 中定义了一个代理,其端点有很多不同的控制器和路径。我只想通过 apigee(获取和发布)公开其中的 2 个。我不知道如何阻止其他人通过 apigee 代理访问其他端点。

有人可以帮忙吗?

【问题讨论】:

    标签: apigee


    【解决方案1】:

    为了确认我正确理解您的要求,目标 API 公开了多个路径。在所有这些路径中,您可能希望通过 Apigee 向您的消费者公开 2 个(GET 和 POST)路径。

    这可以使用conditional flows 来完成。在您的代理端点中创建三个条件流。您想要公开的两条路径的两个条件流。您可以在 Condition 标记中使用路径和 HTTP 动词的组合。

    使用没有任何条件的第三个条件流作为 catch all 块。您可以在第三个条件流中使用raise fault policy 向消费者返回适当的错误。

    您的代理端点应如下所示 -

    <Flows>
        <Flow name="get-resource">
            <Description>Get resource</Description>
            <Request/>
            <Response/>
            <Condition>(proxy.pathsuffix MatchesPath "/resource") and (request.verb = "GET")</Condition>
        </Flow>
        <Flow name="post-resource">
            <Description>Create resource</Description>
            <Request/>
            <Response/>
            <Condition>(proxy.pathsuffix MatchesPath "/resource") and (request.verb = "POST")</Condition>
        </Flow>
        <Flow name="Unknown Resource">
            <Description>Unknown resource</Description>
            <Request>
                <Step>
                    <Name>RaiseFault-UnknownResource</Name>
                </Step>
            </Request>
            <Response/>
        </Flow>
    </Flows>
    

    并且引发错误策略看起来像这样 -

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <RaiseFault async="false" continueOnError="false" enabled="true" name="RaiseFault-UnknownResource">
        <DisplayName>RaiseFault-UnknownResource</DisplayName>
        <Properties/>
        <FaultResponse>
            <Set>
                <Headers/>
                <Payload contentType="text/plain">Resource not found</Payload>
                <StatusCode>404</StatusCode>
                <ReasonPhrase>Not Found</ReasonPhrase>
            </Set>
        </FaultResponse>
        <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    </RaiseFault>
    

    如果这不是要求,请澄清它,我会尝试相应地更新答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-08
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 2016-08-22
      • 1970-01-01
      • 2019-11-30
      • 2016-08-26
      相关资源
      最近更新 更多