假设我想创建以下API:
/movies/{movieId}/cast
/movies/{movieId}/crew
/movies/{movieId}/awards
在Apigee的最新版本中,基本URL中不再允许使用通配符。为实现上述目标,我们首先创建了 API代理 /movies
。然后我们在其下面定义了三个单独的资源,每个资源以通配符开头:
/*/cast
/*/crew
/*/awards
这里有几个问题:
答案 0 :(得分:0)
假设您使用basepath / movies创建了一个API,然后使用/ movies / jaws / cast。然后,您可以创建一个PreFlow策略来提取路径变量,如下所示:
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-URI">
<DisplayName>Extract URI</DisplayName>
<FaultRules/>
<Properties/>
<URIPath>
<Pattern>/{movieid}/{function}</Pattern>
</URIPath>
</ExtractVariables>
您现在有两个变量,一个用于变量,另一个用于实际服务。现在,您可以为变量 function 上的每个函数(演员,工作人员,奖励......)创建条件流,而不是匹配路径:
<Flow name="Cast">
<Description/>
<Request/>
<Response>
<Step>
<FaultRules/>
<Name>Assign-cast</Name>
</Step>
</Response>
<Condition>(function = "cast") and (request.verb = "GET")</Condition>
</Flow>
您可能仍需要做一些魔术来重写目标路径,但您的请求代理路径仍然是/ jaws / cast,但现在您可以针对Jaws的强制转换请求运行特定策略。
有关条件流配置的详细信息,请参阅http://apigee.com/docs/api-services/api/conditions-reference和http://apigee.com/docs/gateway-services/content/flow-variables-and-conditions。