您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 info
了解和管理资源,如以下几个部分所述。
资源简介
许多政策类型都依赖于资源。资源是指政策在附加到 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 资源。
- 环境:资源存储在某一环境(例如,
test或prod)中时,可供部署在此环境中的任何 API 代理使用。 - 组织:资源存储在组织中时,可供 任何 API 代理使用,无论部署在哪个环境中。
根据 资源文件 API 和稍后在 使用 API 管理资源中所述,可以按以下 URI 访问代码库:
- 组织:
/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 会将资源名称从最具体的范围解析为最宽泛的范围。资源 名称以“沿链上行”(up the chain) 的方式解析,即从 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
另请参阅:
- Java 最佳做法:API 代理设计和开发的最佳做法
- Java 实战宝典示例:XSL 转换政策
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
(导入
和 更新)
将资源存储在 API 代理修订版本范围内也是如此。
使用界面管理资源
使用界面管理范围限定为 API 代理修订版本 的资源,如以下几个部分所述。
使用界面查看资源
如需查看范围限定为 API 代理修订版本的资源,请执行以下操作:
-
登录 apigee.com/edge。
- 在左侧导航栏中,选择开发 > API 代理 。
- 在列表中选择要为其创建资源的 API 代理。
系统默认打开 API 代理编辑器并显示“概览”标签页。 - 点击开发标签页。
- 选择修订版本下拉列表中的修订版本(如果需要)。
范围限定为 API 代理修订版本的资源列在导航视图中的资源部分。

使用界面创建资源
如需使用界面创建范围限定为 API 代理修订版本的资源,请执行以下操作:
- 查看范围限定为 API 代理修订版本的资源。
- 点击导航视图的“资源”部分中的 +,以打开“新建资源”对话框。
- 输入以下内容:
字段 说明 来源 选择创建新文件或导入文件。 文件类型 从下拉列表中选择资源类型。 文件名 文件的名称。文件扩展名对于所选文件类型有效。
使用界面更新资源
如需使用界面更新范围限定为 API 代理修订版本的资源,请执行以下操作:
- 查看范围限定为 API 代理修订版本的资源。
- 在导航视图的“资源”下方,点击要更新的资源。
注意:对于 JAR 文件,将光标放在要修改的资源上,然后点击
。 - 根据需要更新资源。
注意 :上传新的 JAR 文件后,点击更新 。
使用界面删除资源
如需使用界面删除范围限定为 API 代理修订版本的资源,请执行以下操作:
- 查看范围限定为 API 代理修订版本的资源。
- 在导航视图的“资源”下方,将光标置于要删除的资源上方以显示操作菜单。
- 点击
。 - 点击删除以确认操作。
使用 API 管理资源
使用 API 管理资源,如以下几个部分所述。
使用 API 创建资源
创建范围限定为 API 代理修订版本、环境或 组织(仅限 Edge)的资源,如以下几个部分所述。
使用 API 创建范围限定为 API 代理修订版本的资源
通过向以下资源发出 POST 请求,使用 API 创建范围限定为 API 代理修订版本的资源:
https://api.enterprise.apigee.com/v1/organizations/{org}/apis/{api}/revisions/{rev}/resourcefiles
在请求中传递以下信息:
- 将
name查询参数设置为资源的名称 - 将
type查询参数设置为必需的资源类型 - 将资源文件的内容作为
application/octet-stream或multipart/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 代理修订版本导入资源文件。
或者,您也可以使用更新 API 代理修订版本 API,如下所示:
- 创建资源文件。
- 将资源文件添加到 API 代理配置软件包。
- 使用以下 API 之一上传该软件包:
使用 API 创建范围限定为环境的资源
通过向以下资源发出 POST 请求,使用 API 创建范围限定为环境的 JavaScript 资源:/organizations/{org}/environments/{env}/resourcefiles
在请求中传递以下信息:
- 将
name查询参数设置为资源的名称 - 将
type查询参数设置为必需的资源类型 - 将资源文件的内容作为
application/octet-stream或multipart/form-data传递
以下示例展示了如何通过在请求正文中传递内容来创建 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-stream或multipart/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 代理修订版本的资源
通过向以下资源发出 PUT 请求,使用 API 更新范围限定为 API 代理修订版本的资源:
https://api.enterprise.apigee.com/v1/organizations/{org}/apis/{api}/revisions/{rev}/resourcefiles/{type}/{name}
将资源文件的内容作为 application/octet-stream 或 multipart/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 代理修订版本导入资源文件。
或者,您也可以使用更新 API 代理修订版本 API,如下所示:
- 使用 导出 API 代理 API 并将各选项设置如下,以下载 API 代理配置软件包:
- 将
format查询参数设置为bundle - 将
Accept标头设置为application/zip
- 将
- 更新 API 代理配置软件包 中的资源文件。
- 使用 更新 API 代理修订版本 API 上传该软件包
使用 API 更新范围限定为环境的资源
通过向以下资源发出 PUT 请求,使用 API 更新范围限定为环境的资源:/organizations/{org}/environments/{env}/resourcefiles/{type}/{name}
将资源文件的内容作为 application/octet-stream 或 multipart/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-stream 或 multipart/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}
以下示例从 helloworld 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"
}或者,您也可以使用更新 API 代理修订版本 API,如下所示:
- 使用 导出 API 代理 API 并将各选项设置如下,以下载 API 代理配置软件包:
- 将
format查询参数设置为bundle - 将
Accept标头设置为application/zip
- 将
- 从 API 代理配置软件包 中删除资源文件。
- 使用 更新 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 政策。