【发布时间】:2022-07-29 17:53:42
【问题描述】:
我在 Apigee 中定义了一个代理,其端点有很多不同的控制器和路径。我只想通过 apigee(获取和发布)公开其中的 2 个。我不知道如何阻止其他人通过 apigee 代理访问其他端点。
有人可以帮忙吗?
【问题讨论】:
标签: apigee
我在 Apigee 中定义了一个代理,其端点有很多不同的控制器和路径。我只想通过 apigee(获取和发布)公开其中的 2 个。我不知道如何阻止其他人通过 apigee 代理访问其他端点。
有人可以帮忙吗?
【问题讨论】:
标签: apigee
为了确认我正确理解您的要求,目标 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>
如果这不是要求,请澄清它,我会尝试相应地更新答案。
【讨论】: