第 5 章 将策略链与 APIcast 原生部署集成


对于原生 APIcast 部署,您可以通过使用 THREESCALE_CONFIG_FILE 环境变量指定配置文件来集成 自定义策略链。以下示例指定了配置文件 example.json

THREESCALE_CONFIG_FILE=example.json bin/apicast

5.1. 在策略中使用变量和过滤器

一些 第 4.1 节 “APIcast 标准策略” 支持 Liquid 模板,它允许使用纯文本值,还包括在请求上下文中存在的变量。

要使用上下文变量,将其名称打包在 {{}} 中,例如: {{ uri }}。如果变量是对象,您也可以访问其属性,例如: {{ somevar.attr }}

以下是所有策略中的标准变量:

  • URI :没有查询参数的请求路径(内嵌的 NGINX 变量 $uri的值)。
  • 主机 :请求的主机(内嵌的 NGINX 变量 $host的值)。
  • REMOTE_ADDR:客户端的 IP 地址(嵌入式 NGINX 变量的值 $ remote_addr )。
  • 标头 :包含请求标头的对象。使用 {{headers['Some-Header']}} 获取特定的标头值。
  • http_method :请求方法:GET、POST 等。

这些变量可在请求 的上下文中 找到。策略可以向上下文添加额外变量。这些变量可由策略链中相同的其他策略使用,只要使用它们的阶段在添加变量的阶段之后执行它们。如果变量在添加变量的策略后显示的策略中使用了同一阶段,则也可以是同一阶段。

以下是标准 3scale APIcast 策略添加到上下文中的变量示例:

  • JWT :用于 OpenID Connect 身份验证的 JWT 令牌的解析 JSON 载荷。
  • Credentials :包含应用凭证的对象。示例:" app_id": "972f7b4f", "user_key": "13b668c4d1e10eaebaa5144b4749713f".
  • Service :包含当前请求的服务配置的对象。示例:服务 ID 将为 {{ service.id }}。

有关上下文中可用对象和值的完整列表,请查看 第 4.1.9 节 “liquid Context Debug 策略”

变量配合 Liquid 模板使用。示例: {{ remote_addr }}{{ headers['Some-Header'] }}{{ jwt.aud }}.支持值变量的策略具有一个特殊参数,通常带有 _type 后缀(例如: value_typename_type 等等),它接受两个值:"plain"表示纯文本,"liquid"用于 liquid 模板。

APIcast 还支持 Liquid 过滤器,可应用于变量的值。过滤器将 NGINX 功能应用到 Liquid 变量的值。

过滤器在变量输出标签 {{ }} 中放置,紧随变量的名称或通过竖线字符 | 和过滤器的名称来排列的字面值。示例:{ { 'username:password' | encode_base64 }}, {{ uri | escape_uri }}.

有些过滤器不需要参数,因此您可以使用空字符串而不是 变量。示例: {{ '' | utctime }} 将以 UTC 时区返回当前时间。

过滤器可以按如下所示链接:{{ variable | function1 | function2 }}。示例: {{ '' | utctime |scap_uri }}.

以下是可用功能列表:

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部