注意:此产品的某些方面处于 Beta 版阶段。Hybrid 安装选项是 GA。要加入 Beta 版计划,请与您的 Apigee 代表联系。

管理资源

了解和管理资源,如以下几个部分所述。

资源简介

许多政策类型都依赖于资源。资源是指政策在附加到 API 代理时将执行的用于实现代码或配置的文件。在某些情况下,与 JavaScript 和 JavaCallout 一样,政策只是在 API 代理中定义执行特定代码的附加点。JavaScript 或 JavaCallout 政策是指向资源的指针。

以下示例 JavaScript 将 HTTP 请求路径设置为 proxy.basepath 变量的值。

request.headers["RequestPath"] = context.getVariable("proxy.basepath");

资源类型

下表汇总了资源类型:

资源类型 说明
JAR (java) JavaCallout 政策引用的 JAR 文件中的 Java 类。
JavaScript (js) JavaScript 政策引用的 JavaScript。
JavaScript (jsc) JavaScript 政策引用的已编译 JavaScript。
OpenAPI Specification (oas) OpenAPI 规范,用于验证 JSON 或 YAML 类型的请求和响应消息。
Property Set (properties) API 代理属性集可引用的键值对集合。
Python (py) PythonScript 政策引用的 Python 脚本。资源必须采用“纯 Python”(只有 Python 语言)实现。
WSDL (wsdl) SOAPMessageValidation 政策引用的 WSDL 文件。
XSD (xsd) SOAPMessageValidation 政策引用的 XML 架构。
XSL Transformations (xsl) XSLTransform 政策引用的 XSLT 转换。

资源的存储位置

您可以将资源存储到以下位置。

资源可存储在以下任一位置。您无法将资源文件存储在组织中。

  • API 代理修订版本:资源仅可用于包含资源的 API 代理修订版本。例如,您可以添加含某个 API 代理的修订版本 1 的 JavaScript 资源,然后将实现更改为在代理的修订版本 2 中使用 Python 脚本。修订版本 1 只能访问 JavaScript 资源,修订版本 2 只能访问 Python 资源。
  • 环境:资源存储在某一环境(例如,testprod)中时,可供部署在此环境中的任何 API 代理使用。

根据列出资源文件 API使用 API 管理资源中所述,可以按以下 URI 访问环境代码库:/organizations/{org}/environments/{env}/resourcefiles

下表显示了可用于创建、更新和删除每个代码库的资源的方法:

代码库 创建 视图 更新 删除
API 界面 API 界面 API 界面 API 界面
API 代理修订版本
环境

例如,可用于 test 环境的所有 JavaScript 文件都存储在以下代码库中,并可供在 test 环境中运行的任何 API 代理使用:

/organizations/organization_ID/environments/test/resourcefiles/jsc

资源名称解析

将资源名称从最具体的范围解析为最宽泛的范围。资源名称以“沿链上行”(up the chain) 的方式解析,即从 API 代理修订版本级别解析到环境级别。

假设您已在两个不同的代码库中填充同一资源 - API 代理修订版本和 prod 环境。

请考虑配置了以下政策的 API 代理:

<Javascript name='PathSetterPolicy' timeLimit='200'>
    <ResourceURL>jsc://pathSetter.js</ResourceURL>
</Javascript>

政策引用无法显式解析至某个代码库。系统将解析最精细的范围中名称与政策中的资源名称匹配的第一个资源。

因此,当该 API 代理部署在 prod 环境中时,该政策将解析至环境范围的 pathSetter.js 资源。

部署在 test 环境中时,该政策将解析为 API 代理修订版本范围的资源,因为环境范围的资源位于 prod 环境中,而不是 test 环境中。

Java 资源指南

您可以使用 curl 中的多个选项将已编译的 Java 资源添加为 JAR 文件,例如 -T--data-binary-F 选项(不是 -d 选项)。例如:

curl "http://apigee.googleapis.com/v1/organizations/{org}/environments/{env}/resourcefiles?name={jar_file}&type=java" \
  -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @{jar_file}
curl "http://apigee.googleapis.com/v1/organizations/{org}/environments/{env}/resourcefiles?name={jar_file}&type=java" \
  -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/octet-stream" \
  -T "{jar_file}"
curl "http://apigee.googleapis.com/v1/organizations/{org}/environments/{env}/resourcefiles?name={jar_file}&type=java" \
  -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/octet-stream" \
  -F "file=@{jar_file}"

另请参阅:

使用界面管理资源

使用界面管理范围限定为 API 代理修订版本的资源,如以下几个部分所述。

使用界面查看资源

如需查看范围限定为 API 代理修订版本的资源,请执行以下操作:

  1. 访问界面:

    登录 Apigee 界面

  2. 在左侧导航栏中,选择开发 > API 代理
  3. 在列表中选择要为其创建资源的 API 代理。
    系统默认打开 API 代理编辑器并显示“概览”标签页。
  4. 点击开发标签页。
  5. 选择修订版本下拉列表中的修订版本(如果需要)。

    范围限定为 API 代理修订版本的资源列在导航视图中的资源部分。

使用界面创建资源

如需使用界面创建范围限定为 API 代理修订版本的资源,请执行以下操作:

  1. 查看范围限定为 API 代理修订版本的资源
  2. 点击导航视图的“资源”部分中的 +,以打开“新建资源”对话框。
  3. 输入以下内容:
    字段 说明
    来源 选择创建新文件或导入文件。
    文件类型 从下拉列表中选择资源类型
    文件名 文件的名称。文件扩展名对于所选文件类型有效。

使用界面更新资源

仅当修订版本尚未部署时,才更新范围限定为 API 代理修订版本的资源。API 代理修订版本部署后,属性集将不可变。

如需使用界面更新范围限定为 API 代理修订版本的资源,请执行以下操作:

  1. 查看范围限定为 API 代理修订版本的资源
  2. 在导航视图的“资源”下方,点击要更新的资源。
    注意:对于 JAR 文件,将光标放在要修改的资源上,然后点击
  3. 根据需要更新资源。
    注意:上传新的 JAR 文件后,点击更新

使用界面删除资源

仅当修订版本尚未部署时,才删除更新范围限定为 API 代理修订版本的资源。API 代理修订版本部署后,属性集将不可变。

如需使用界面删除范围限定为 API 代理修订版本的资源,请执行以下操作:

  1. 查看范围限定为 API 代理修订版本的资源
  2. 在导航视图的“资源”下方,将光标置于要删除的资源上方以显示操作菜单。
  3. 点击
  4. 点击删除以确认操作。

使用 API 管理资源

使用 API 管理资源,如以下几个部分所述。

使用 API 创建资源

创建范围限定为 API 代理修订版本环境的资源,如以下几个部分所述。

使用 API 创建范围限定为 API 代理修订版本的资源

使用 API 创建范围限定为 API 代理修订版本的资源,如以下几个部分所述。

如需使用 API 创建范围限定为 API 代理修订版本的资源,请执行以下操作:

  1. 创建资源文件。
  2. 将资源文件添加到 API 代理配置软件包
  3. 使用以下 API 之一上传软件包:

使用 API 创建范围限定为环境的资源

通过向以下资源发出 POST 请求,使用 API 创建范围限定为环境的 JavaScript 资源:/organizations/{org}/environments/{env}/resourcefiles

在请求中传递以下信息:

  • name 查询参数设置为资源的名称
  • type 查询参数设置为必需的资源类型
  • 将资源文件的内容作为 application/octet-streammultipart/form-data 传递

以下示例展示了如何通过在请求正文中传递内容来创建 JavaScript 资源。

curl -X POST https://apigee.googleapis.com/v1/organizations/myorg/environments/test/resourcefiles?name=pathSetter.js&type=jsc
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-type:application/octet-stream" \
  -d 'request.headers["RequestPath"] = context.getVariable("proxy.basepath");'

按照获取 OAuth 2.0 访问令牌中的说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌。如需了解此示例中使用的 curl 选项,请参阅使用 curl。如需了解所使用的环境变量,请参阅为 Apigee API 请求设置环境变量

以下示例展示了如何将资源作为文件从本地机器上传。务必对 curl 中的二进制文件上传使用 -F,以便 JavaScript 政策可以访问环境或组织范围的 JavaScript 文件。

curl -X POST https://apigee.googleapis.com/v1/organizations/myorg/environments/test/resourcefiles?name=pathSetter.js&type=jsc
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-type:multipart/form-data" \
  -F file=@pathSetter.js

按照获取 OAuth 2.0 访问令牌中的说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌。如需了解此示例中使用的 curl 选项,请参阅使用 curl。如需了解所使用的环境变量,请参阅为 Apigee API 请求设置环境变量

以下提供了一个响应示例:

{
  "name" : "pathSetter.js",
  "type" : "jsc"
}

使用 API 查看资源

以下几个部分介绍如何使用 API 查看资源。

使用 API 查看所有资源

使用 API 查看范围限定为环境的所有资源,如以下几个部分所述。

使用该 API,您可以仅查看范围限定为环境的资源。

如需使用 API 查看环境中的所有资源,请向以下资源发出 GET 请求:https://apigee.googleapis.com/v1/organizations/{org}/environments/{env}/resourcefiles

以下示例列出了 test 环境中的所有资源:

curl -X GET https://apigee.googleapis.com/v1/organizations/myorg/environments/test/resourcefiles
  -H "Authorization: Bearer $TOKEN"

按照获取 OAuth 2.0 访问令牌中的说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌。如需了解此示例中使用的 curl 选项,请参阅使用 curl。如需了解所使用的环境变量,请参阅为 Apigee API 请求设置环境变量

如需了解详情,请参阅列出环境资源文件 API

以下提供了一个响应示例。

{
  "resourceFile": [
{
  "name" : "pathSetter.js",
  "type" : "jsc"
}
  ]
}

使用 API 查看资源的内容

使用 API 查看资源的内容,如以下几个部分所述。

如需使用 API 查看环境中的资源的内容,请对以下资源发出 GET 请求:/organizations/{org}/environments/{env}/resourcefiles/{type}/name

如需使用 API 查看环境中的资源的内容,请对以下资源发出 GET 请求:https://api.enterprise.apigee.com/v1/organizations/{org}/environments/{env}/resourcefiles/{type}/name

以下示例列出了 test 环境中 pathSetter.js JavaScript 资源文件的内容:

curl -X GET https://apigee.googleapis.com/v1/organizations/myorg/environments/test/resourcefiles/jsc/pathSetter.js
  -H "Authorization: Bearer $TOKEN"

按照获取 OAuth 2.0 访问令牌中的说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌。如需了解此示例中使用的 curl 选项,请参阅使用 curl。如需了解所使用的环境变量,请参阅为 Apigee API 请求设置环境变量

以下提供了一个响应示例:

request.headers["RequestPath"] = context.getVariable("proxy.basepath");

使用 API 更新资源

更新范围限定为 API 代理修订版本环境的资源,如以下几个部分所述。

使用 API 更新范围限定为 API 代理修订版本的资源

如需使用 API 更新范围限定为 API 代理修订版本的资源,请执行以下操作:

  1. 使用获取 API 代理修订版本 API 并将各选项设置如下,以下载 API 代理配置软件包:
    • format 查询参数设置为 bundle
    • Accept 标头设置为 application/zip
  2. 更新 API 代理配置软件包中的资源文件。
  3. 使用更新 API 代理修订版本 API 上传 API 代理配置软件包。

使用 API 更新范围限定为环境的资源

通过向以下资源发出 PUT 请求,使用 API 更新范围限定为环境的资源:/organizations/{org}/environments/{env}/resourcefiles/{type}/{name}

将资源文件的内容作为 application/octet-streammultipart/form-data 传递。

以下示例展示了如何通过在请求正文中传递内容来更新 JavaScript 资源。

curl -X PUT https://apigee.googleapis.com/v1/organizations/myorg/environments/test/resourcefiles/jsc/pathSetter.js
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-type:application/octet-stream" \
  -d 'request.headers["RequestPath"] = context.getVariable("proxy.basepath");'

按照获取 OAuth 2.0 访问令牌中的说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌。如需了解此示例中使用的 curl 选项,请参阅使用 curl。如需了解所使用的环境变量,请参阅为 Apigee API 请求设置环境变量

以下示例展示如何使用本地机器中的文件更新资源文件。务必对 curl 中的二进制文件上传使用 -F,以便 JavaScript 政策可以访问环境或组织范围的 JavaScript 文件。

curl -X PUT https://apigee.googleapis.com/v1/organizations/myorg/environments/test/resourcefiles/jsc/pathSetter.js
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-type:multipart/form-data" \
  -F file=@pathSetter.js

按照获取 OAuth 2.0 访问令牌中的说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌。如需了解此示例中使用的 curl 选项,请参阅使用 curl。如需了解所使用的环境变量,请参阅为 Apigee API 请求设置环境变量

以下提供了一个响应示例:

{
  "name" : "pathSetter.js",
  "type" : "jsc"
}

使用 API 删除资源

删除范围限定为 API 代理修订版本环境的资源,如以下几个部分所述。

使用 API 删除范围限定为 API 代理修订版本的资源

在 Hybrid 中,如需使用 API 删除范围限定为 API 代理的资源,请执行以下操作:

  1. 使用获取 API 代理修订版本 API 并将各选项设置如下,以下载 API 代理配置软件包:
    • format 查询参数设置为 bundle
    • Accept 标头设置为 application/zip
  2. API 代理配置软件包中删除资源文件。
  3. 使用更新 API 代理修订版本 API 上传 API 代理配置软件包。

使用 API 删除范围限定为环境的资源

使用 API 删除范围限定为环境的资源,如以下几个部分所述。

如需使用 API 删除范围限定于环境的资源,请对以下资源发出 DELETE 请求:https://apigee.googleapis.com/v1/organizations/{org}/environments/{env}/resourcefiles/{type}/{name}

以下示例从 test 环境中删除 pathSetter.js JavaScript 资源文件:

curl -X DELETE https://apigee.googleapis.com/v1/organizations/my-organization/environments/test/resourcefiles/jsc/pathSetter.js \
  -H "Authorization: Bearer $TOKEN"
  

按照获取 OAuth 2.0 访问令牌中的说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌。如需了解此示例中使用的 curl 选项,请参阅使用 curl。如需了解所使用的环境变量,请参阅为 Apigee API 请求设置环境变量

如需了解详情,请参阅删除资源文件 API

以下提供了一个响应示例。

{
  "name" : "pathSetter.js",
  "type" : "jsc"
}

访问资源

如何访问资源取决于资源类型。如需了解详情,请参阅相关政策文档

本部分中的示例演示如何创建和管理名为 pathSetter.js 的 JavaScript 资源,以便 JavaScript 类型的政策引用该资源。

如需将 JavaScript 附加到请求 PostFlow,请创建将引用文件 pathSetter.js 且名为 PathSetterPolicy.xml 的政策:

<Javascript name='PathSetterPolicy' timeLimit='200'>
    <ResourceURL>jsc://pathSetter.js</ResourceURL>
</Javascript>

然后,在端点配置中引用该政策:

<PostFlow>
  <Request>
    <Step><Name>PathSetterPolicy</Name></Step>
  </Request>
<PostFlow>

如需了解详情,请参阅 JavaScript 政策