转载

REST 管理接口与 IBM DataPower Gateway: 第 3 部分:文件和目录管理

简介

在 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 显示了此请求需要的请求载荷。在这里,文件名和内容必须在 namecontent 参数中适当地指定。文件内容必须为 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 管理接口执行的操作。

回页首

参考资料

查阅本系列中的其他部分:

  • REST 管理接口与 IBM DataPower Gateway,第 1 部分:接口和状态监视简介
  • REST 管理接口与 IBM DataPower Gateway,第 2 部分:配置管理
  • REST 管理接口与 IBM DataPower Gateway,第 3 部分:文件和目录管理
  • REST 管理接口与 IBM DataPower Gateway,第 4 部分:触发设备操作

在阅读本教程时,以下链接很有帮助:

  • 要开始使用 REST 管理接口,请参阅启用 REST 管理接口。
  • 有关与 REST 管理接口相关的所有信息,请参阅REST 管理接口。
  • 有关来自 REST 管理接口的请求和响应示例,请参阅 使用 REST 管理接口的示例 。
  • 要获取 DataPower SOA Appliances 7.2.0 文档,请访问IBM 知识中心。
  • 要查阅 developerWorks® WebSphere® 专区中的 DataPower 教程,请访问技术库。
  • 有关最新的新闻和信息,请参阅 IBM developerWorks WebSphere 专区 。
  • 加入 developerWorks 中文社区 ,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。
原文  http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1512_derbakova/1512_Derbakova_P3.html?ca=drs-
正文到此结束
Loading...