在 IBM DataPower Gateway 设备的固件版本 7.2.0.0 中,REST 管理接口提供了端到端的文件和目录管理能力。在本系列的第 3 部分中,我们将了解具体的文件系统请求。学习目录管理,包括如何检索一个现有目录的内容,如何创建和删除目录。还要学习文件管理,包括如何检索文件内容,创建和更新文件,以及删除文件。有关其他请求类型的信息,比如状态监视,配置管理,以及设备操作,请参阅本系列中的其他部分。
回页首
要开始检索和修改现有文件系统资源,必须熟悉 REST 管理接口的表示设备文件系统的文件存储资源。可访问 REST 管理接口的根统一资源标识符 (URI) 来找到文件存储资源,如下面这个请求所示:
GET https://dphost.com:5554/mgmt/
清单 1 给出了从根 URI 收到的响应。该响应显示了设备上的可用资源类别。文件存储资源使用 /mgmt/filestore/
URI 标识。
清单 1. 根 URI 响应
{ "_links": { "self": { "href": "/mgmt/" }, "config": { "href": "/mgmt/config/" }, "domains": { "href": "/mgmt/domains/config/" }, "status": { "href": "/mgmt/status/" }, "actionqueue": { "href": "/mgmt/actionqueue/" }, "filestore": { "href": "/mgmt/filestore/" }, "metadata": { "href": "/mgmt/metadata/" }, "types": { "href": "/mgmt/types/" } } }
使用下面这个请求访问文件存储根 URI /mgmt/filestore/
时,可以看到设备文件存储资源的可用选项:
GET https://dphost.com:5554/mgmt/filestore/
清单 2 显示了操作设备上的各个文件和目录所需的 URI 结构。
清单 2. 文件存储根 URI 响应
{ "_links": { "self": { "href": "/mgmt/filestore/" }, "top": { "href": "/mgmt/filestore/{domain}/{top_directory}" }, "directory": { "href": "/mgmt/filestore/{domain}/{top_directory}/{directory_path}" }, "file": { "href": "/mgmt/filestore/{domain}/{top_directory}/{file_path}" } } }
回页首
可执行所有目录管理操作。这些操作包括检索现有目录的内容,创建目录和子目录,以及删除现有目录。
可以检索任何设备目录的内容,只要拥有该目录的适当访问权限。要检索任何目录的内容,可依据清单 2中的 directory
链接构造一个 URI。下面这个请求给出了一个示例,其中在 test-domain_1
中访问了 local:///test-directory
目录:
GET https://dphost.com:5554/mgmt/filestore/test-domain_1/local/test-directory
清单 3 显示,目标目录包含一个 test-file 文件和该文件的相关信息。
清单 3. 检索目录内容的响应
{ "_links": { "self": { "href": "/mgmt/filestore/test-domain_1/local/test-directory" }, "doc": { "href": "/mgmt/docs/filestore" } }, "filestore": { "location": { "name": "local:/test-directory", "file": { "name": "test-file", "size": 1182, "modified": "2015-04-07 15:14:17", "href":"/mgmt/filestore/test-domain_1/local/test-directory/test-file" }, "href":"/mgmt/filestore/test-domain_1/local/test-directory" } } }
可以使用 PUT 请求或 POST 请求来创建目录。两种请求完成相同的操作,但需要不同的 URI 才能成功完成。您可选择更方便的方法。下面这个 POST 请求显示了在 test-domain_1
中的 local:///
目录中创建一个子目录所需的 URI:
POST https://dphost.com:5554/mgmt/filestore/test-domain_1/local
下面这个 PUT 请求显示了在 test-domain_1
中的 local:///
目录中创建一个 test-directory 子目录所需的 URI:
PUT https://dphost.com:5554/mgmt/filestore/test-domain_1/local/test-directory
POST 和 PUT 请求中的两个 URI 都达成相同的目标,只要创建的子目录名称相同。清单 4 显示了此请求需要的请求载荷,其中目录名称必须在 name
参数中适当地指定。此载荷结构可同时用于 PUT 请求和 POST 请求。PUT 请求的载荷和 URI 中的目录名称必须匹配。否则会导致错误。
清单 4. 创建目录的请求载荷
{ "directory": { "name": "test-directory" } }
创建目录后,可以看到一个类似清单 5 中的示例的响应。
清单 5. 创建目录的响应
{ "_links": { "self": { "href": "/mgmt/filestore/test-domain_1/local" }, "doc": { "href": "/mgmt/docs/filestore" } }, "test-directory": "Directory has been created." }
现有目录资源上的 POST 请求和 PUT 请求不允许重写该目录。此特性可预防意外删除目录内容。如果您打算将一个目录重写为新内容,必须首先发出一个 DELETE 请求来删除该目录,然后重新创建它。
要删除一个现有目录,可向目标目录发送一个 HTTP DELETE 请求。下面这个示例请求显示了 default
域中的 local:///test_dir
目录:
DELETE https://dphost.com:5554/mgmt/filestore/default/local/test_dir
删除目录后,可以看到一个类似清单 6 中的示例的响应。
清单 6. 删除目录的响应
{ "_links": { "self": { "href": "/mgmt/filestore/default/local/test_dir" }, "doc": { "href": "/mgmt/docs/filestore" } }, "result": "ok", "script-log": "" }
回页首
可执行所有文件管理操作。这些操作包括检索和更新现有文件的内容,创建文件,以及删除现有文件。
可以检索设备上的任何文件的内容,只要拥有该文件的适当访问权限。要检索任何文件的内容,可依据清单 2 中的 file
链接构造一个 URI。下面这个请求检索 default
域中的 local:///test_dir
目录中的 test_file.txt 文件的内容:
GET https://dphost.com:5554/mgmt/filestore/default/local/test_dir/test_file.txt
清单 7 显示了以 base64 编码载荷形式返回的文件内容。
清单 7. 检索文件内容的响应
{ "_links": { "self": { "href": "/mgmt/filestore/default/local/test_dir/test_file.txt" }, "doc": { "href": "/mgmt/docs/filestore" } }, "file": { "name": "local:///test_dir/test_file.txt", "value": "SEVMTE8hISE=..." } }
可以使用 PUT 请求或 POST 请求来创建文件。两种请求完成相同的操作,但需要不同的 URI 才能成功完成。使用 POST 请求创建文件,因为如果目标目录中存在一个具有相同名称的文件,POST 请求会产生错误。此特性可预防意外地重写现有的文件。但是,也可使用 PUT 请求创建文件。在现有文件上发出 PUT 请求,会使用请求载荷中的内容重写该文件。
下面这个 POST 请求显示了在 test-domain_1
中的 local:///
目录中创建一个文件所需的 URI:
POST https://dphost.com:5554/mgmt/filestore/test-domain_1/local
下面这个 PUT 请求显示了在 test-domain_1
中的 local:///
目录中创建一个 test-file 文件所需的 URI:
PUT https://dphost.com:5554/mgmt/filestore/test-domain_1/local/test-file
两个 URI 都达成相同的目标,只要创建的文件名称相同。清单 8 显示了此请求需要的请求载荷。在这里,文件名和内容必须在 name
和 content
参数中适当地指定。文件内容必须为 base64 编码,它们才能嵌入到请求载荷中。为 PUT 请求和 POST 请求都使用此载荷结构。PUT 请求的载荷和 URI 中的文件名必须匹配。否则会导致错误。
清单 8. 创建文件的请求载荷
{ "file": { "name":"test-file", "content":"dG9wOyBjb25maWd1cmUgdGVybWluYWw7CgojIGNvbmZpZ3VyYXRpb 24gZ2VuZX4gOSAxMjowMludGVyZmFjZSAiZXRoMTAgYXJwCiAgaXB 2NgogIG5vIHNsYWFjCiAgbXR1ICIxNTAwIgogIGlwdjYtbGlua2xv Y2FsLXN0YXJ0dXAtd28tcHJpbWFyeS1pcGFkZHIKICBhZG1pbi1zd GF0ZSAiZW5hYmxlZCIKZXhpdCAKCmludGVyZmFjZSAiZXRoMjAi..." } }
创建文件后,会返回一个类似清单 9 中所示的示例的响应。
清单 9. 创建文件的响应
{ "_links": { "self": { "href": "/mgmt/filestore/test-domain_1/local/test-file" }, "doc": { "href": "/mgmt/docs/filestore" } }, "test-file": "File has been created." }
要更新现有的文件资源,可向目标文件发出下面这个 PUT 请求:
PUT https://dphost.com:5554/mgmt/filestore/test-domain_1/local/test-file
现有的文件会被载荷内容重写,如清单 10 所示。
清单 10. 更新文件的响应
{ "_links": { "self": { "href": "/mgmt/filestore/test-domain_1/local/test-file" }, "doc": { "href": "/mgmt/docs/filestore" } }, "test-file": "File has been updated." }
要删除一个现有文件,可向目标文件发送一个 HTTP DELETE 请求。下面这个示例展示了这个对 default
域中的 local:///test_dir
目录中的 test_file.txt 文件的请求:
DELETE https://dphost.com:5554/mgmt/filestore/default/local/test_dir/test_file.txt
删除该文件后,会返回一个与清单 11 中所示的示例类似的响应。
清单 11. 删除文件的响应
{ "_links": { "self": { "href": "/mgmt/filestore/default/local/test_dir/test_file.txt" }, "doc": { "href": "/mgmt/docs/filestore" } }, "result": "ok" }
回页首
在本教程中,我们了解了通过 IBM DataPower Gateway 设备的 REST 管理接口执行文件和目录管理的功能。学习了如何导航设备文件系统,如何检索现有文件和目录的内容,以及如何删除现有资源。还学习了如何构造有效的请求载荷来在设备上创建文件系统资源。作为本教程系列的延续,第 4 部分 将介绍可通过 DataPower Gateway 设备的 REST 管理接口执行的操作。
回页首
查阅本系列中的其他部分:
在阅读本教程时,以下链接很有帮助: