管理资源

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

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

资源简介

许多政策类型都依赖于资源。资源是指政策在附加到 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。
Hosted target (hosted) 要部署到托管目标的 Node.js 文件。您可以将 Node.js 部署为 Edge 后端目标应用。
Node (node) Node.js 文件,包括 Node.js 主文件、相关源文件和模块依赖项。
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 代理使用。

代码库位于以下 URI 中,详情请参阅 Resource Files API 和后续的使用 API 管理资源部分:

  • 单位:/organizations/{org}/resourcefiles
  • 环境:/organizations/{org}/environments/{env}/resourcefiles
  • API 代理:/organizations/{org}/apis/{api}/revisions/{rev}/resources

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

代码库 创建 查看 更新 删除
API 界面 API 界面 API 界面 API 界面
API 代理修订版本
环境
组织

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

/organizations/{org}/environments/test/resourcefiles/jsc

资源名称解析

Edge 会按照最具体到最宽泛的范围来解析资源名称。资源名称在“链上”解析:从 API 代理修订版本级别到环境级别,再到组织级别(仅限 Edge)。

假设您已在两个不同的代码库中填充同一资源 - 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://{mgmt_server}:{port}/v1/organizations/{org}/environments/{env}/resourcefiles?name={jar_file}&type=java" \
  -X POST \
  --data-binary @{jar_file} \
  -H "Content-Type: application/octet-stream" \
  -u email:password
curl -v "http://{mgmt_server}:{port}/v1/organizations/{org}/environments/{env}/resourcefiles?name={jar_file}&type=java"
  -X POST \
  -H "Content-Type: application/octet-stream" \
  -T "{jar_file}" \
  -u email:password
curl -v "http://{mgmt_server}:{port}/v1/organizations/{org}/environments/{env}/resourcefiles?name={jar_file}&type=java"
  -X POST \
  -H "Content-Type: application/multipart/form-data" \
  -F "file=@{jar_file}" \
  -u email:password

另请参阅:

Node.js 资源准则

在 API 代理中引用 Node.js 脚本时,可以使用 API 代理的 TargetEndpoint 配置中的 <ResourceURL> 元素执行此操作(如向现有 API 代理添加 Node.js 中所述)。例如:

<ScriptTarget>
    <ResourceURL>node://hello-world.js</ResourceURL>
</ScriptTarget>

该 Node.js 脚本和所有支持模块必须位于 API 代理修订版本范围内(在代理软件包的 /resources/node 目录中)。在 API 代理编辑器中,将 Node.js 资源添加到“脚本”部分可完成此操作。使用 API(import更新)在 API 代理修订版本范围内存储资源也是如此。

使用界面管理资源

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

使用界面查看资源

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

  1. 登录 apigee.com/edge

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

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

使用界面创建资源

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

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

使用界面更新资源

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

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

使用界面删除资源

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

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

使用 API 管理资源

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

使用 API 创建资源

如以下部分所述,创建范围限定为 API 代理修订版本环境组织(仅限 Edge)的资源。

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

使用 API 创建范围限定为 API 代理修订版本的资源,方法是向以下资源发出 POST 请求: https://api.enterprise.apigee.com/v1/organizations/{org}/apis/{api}/revisions/{rev}/resourcefiles

在请求中传递以下信息:

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

以下示例为 helloworld API 代理的修订版 1 创建了一个名为 pathSetter.js 的 JavaScript 文件:

curl -X POST https://api.enterprise.apigee.com/v1/organizations/myorg/apis/helloworld/revisions/1/resourcefiles?name=pathSetter.js&type=jsc
  -H "Content-type:application/octet-stream" \
  -d 'request.headers["RequestPath"] = context.getVariable("proxy.basepath");' \
  -u email:password

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

curl -X POST https://api.enterprise.apigee.com/v1/organizations/myorg/apis/helloworld/revisions/1/resourcefiles?name=pathSetter.js&type=jsc
  -H "Content-type:multipart/form-data" \
  -F file=@pathSetter.js \
  -u email:password

以下示例展示了任一 API 调用的响应示例。

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

如需了解详情,请参阅导入 API 代理修订版本的资源文件

或者,您也可以使用 Update API 代理修订版本 API,如下所示:

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

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

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

在请求中传递以下信息:

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

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

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

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

curl -X POST https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/resourcefiles?name=pathSetter.js&type=jsc
  -H "Content-type:multipart/form-data" \
  -F file=@pathSetter.js \
  -u email:password

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

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

使用 API 创建范围限定为组织的资源

如需使用 API 创建范围限定为某个组织的资源,请向以下资源发出 POST 请求: https://api.enterprise.apigee.comv1/organizations/{org}/resourcefiles

在请求中传递以下信息:

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

如需了解详情,请参阅导入组织的资源文件

使用 API 查看资源

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

使用 API 查看所有资源

借助 API,您可以查看范围限定为 API 代理修订版本环境组织的资源。

例如,如需查看使用 API 限定为环境的资源的资源,请向以下资源发出 GET 请求: https://api.enterprise.apigee.com/v1/organizations/{org}/environments/{env}/resourcefiles

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

curl -X GET "https://api.enterprise.apigee.com/v1/organizations/my-organization/environments/test/resourcefiles/{type}" \
  -u email:password

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

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

使用 API 查看资源的内容

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

借助 API,您可以查看范围限定为 API 代理修订版本环境组织的资源。

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

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

curl -X GET https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/resourcefiles/jsc/pathSetter.js" \
  -H "Accept: application/json" \
  -u email:password

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

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

使用 API 更新资源

更新范围限定为 API 代理修订版本环境组织(仅限 Edge)的资源,如以下部分所述。

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

使用 API 更新范围限定为 API 代理修订版本的资源,方法是向以下资源发出 PUT 请求: https://api.enterprise.apigee.com/v1/organizations/{org}/apis/{api}/revisions/{rev}/resourcefiles/{type}/{name}

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

以下示例为 helloworld API 代理的修订版 1 更新名为 pathSetter 的 JavaScript 资源:

curl -X PUT https://api.enterprise.apigee.com/v1/organizations/myorg/apis/helloworld/revisions/1/resourcefiles/jsc/pathSetter.js
  -H "Content-type:application/octet-stream" \
  -d 'request.headers["RequestPath"] = context.getVariable("proxy.basepath");' \
  -u email:password

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

curl -X PUT https://api.enterprise.apigee.com/v1/organizations/myorg/apis/helloworld/revisions/1/resourcefiles/jsc/pathSetter.js
  -H "Content-type:multipart/form-data" \
  -F file=@pathSetter.js \
  -u email:password

以下示例展示了任一 API 调用的响应示例。

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

如需了解详情,请参阅导入 API 代理修订版本的资源文件

或者,您也可以使用 Update API 代理修订版本 API,如下所示:

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

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

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

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

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

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

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

curl -X PUT https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/resourcefiles/jsc/pathSetter.js
  -H "Content-type:multipart/form-data" \
  -F file=@pathSetter.js \
  -u email:password

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

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

使用 API 更新范围限定为组织的资源

如需使用 API 更新范围限定为某个组织的资源,请向以下资源发出 POST 请求: https://api.enterprise.apigee.comv1/organizations/{org}/resourcefiles/{type}/{name}

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

如需了解详情,请参阅导入组织的资源文件

使用 API 删除资源

删除范围限定为 API 代理修订版本环境组织(仅限 Edge)的资源,如以下部分所述。

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

如需使用 API 删除范围限定为 API 代理修订版本的资源,请向以下资源发出 DELETE 请求:https://api.enterprise.apigee.com/v1/organizations/{org}/apis/{api}/revisions/{rev}/resourcefiles/{type}/{name}

以下示例从 checkout API 代理的修订版 1 中删除了 pathSetter.js JavaScript 资源文件:

curl -X GET "https://api.enterprise.apigee.com/v1/organizations/my-organization/apis/helloworld/revisions/1/resourcefiles/jsc/pathSetter.js" \
  -u email:password
  

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

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

或者,您也可以使用 Update API 代理修订版本 API,如下所示:

  1. 使用包含以下选项的 Export API 代理 API 下载 API 代理配置包:
    • format 查询参数设置为 bundle
    • Accept 标头设置为 application/zip
  2. API 代理配置软件包中删除资源文件。
  3. 使用 Update API 代理修订版本 API 上传软件包

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

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

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

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

curl -X GET "https://api.enterprise.apigee.com/v1/organizations/my-organization/environments/test/resourcefiles/jsc/pathSetter.js" \
  -u email:password

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

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

使用 API 删除范围限定为组织的资源(仅限 Edge)

如需使用 API 删除范围限定为某个组织的资源,请向以下资源发出 DELETE 请求: https://api.enterprise.apigee.comv1/organizations/{org}/resourcefiles/{type}/{name}

有关详情,请参阅从组织中删除资源文件

访问资源

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

本部分中的示例演示如何创建和管理名为 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 政策