【问题标题】:[apigee]how to stop an request from hitting default backend target[apigee]如何阻止请求命中默认后端目标
【发布时间】:2014-12-03 03:34:53
【问题描述】:

我想限制对 API 代理中不存在的资源的请求,使其不能达到“默认”目标。

一种方法是在允许访问的 API 产品中添加所有资源,但需要在请求中传递此 api 密钥。在我的情况下,api 密钥未在请求中传递。

请就如何检查阻塞请求提出任何其他方法。

【问题讨论】:

    标签: apigee


    【解决方案1】:

    首先,如果您的资源都位于 /v1 之类的基本路径中,您应该创建一个“catch-all”API,该 API 将阻止 /v1 API 组中的任何内容。创建一个没有目标且基本路径为 / 的新 API——然后您可以在其中放置一条分配消息或引发错误策略,返回 404 错误。这看起来像:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ProxyEndpoint name="default">
        <Description/>
        <Flows/>
        <PreFlow name="PreFlow">
            <Request>
                <Step>
                    <FaultRules/>
                    <Name>fault-not-found</Name>
                </Step>
            </Request>
            <Response/>
        </PreFlow>
        <HTTPProxyConnection>
            <BasePath>/</BasePath>
            <VirtualHost>default</VirtualHost>
            <VirtualHost>secure</VirtualHost>
        </HTTPProxyConnection>
        <RouteRule name="noroute"/>
        <PostFlow name="PostFlow">
            <Request/>
            <Response/>
        </PostFlow>
    </ProxyEndpoint>
    

    然后,您需要在 /v1 中定义每个资源,但在您的代理上无条件地创建一个端点 - 请注意,这必须位于所有其他端点的末尾(在XML)。当 Apigee 满足每个条件时(proxy.pathsuffix MatchesPath“/resource-1”),它将停止处理其他流。

    因此,当它到达引发错误的最终流时,您的 API 使用者将被阻塞:

    <Flows>
        <Flow name="Resource 1">
            <Description/>
            <Request/>
            <Response/>
            <Condition>(proxy.pathsuffix MatchesPath &quot;/resource-1&quot;) and (request.verb = &quot;GET&quot;)</Condition>
        </Flow>
        <Flow name="Resource 2">
            <Description/>
            <Request/>
            <Response/>
            <Condition>(proxy.pathsuffix MatchesPath &quot;/resource-2&quot;) and (request.verb = &quot;GET&quot;)</Condition>
        </Flow>
        <Flow name="catchall">
            <Description/>
            <Request>
            <Step>
                <FaultRules/>
                <Name>fault-not-found</Name>
            </Step>
            <Response/>
        </Flow>
    </Flows>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-20
      • 1970-01-01
      • 1970-01-01
      • 2015-08-18
      • 1970-01-01
      • 1970-01-01
      • 2019-09-04
      • 1970-01-01
      相关资源
      最近更新 更多