#1f4970
官方英文版链接
《Synology File Station Official API》
在使用 File Station API 开发自己的应用程序之前,您需要对 API 概念和 API 程序有基本的了解。
本章分以下五个部分解释如何执行和完成 API 流程:
API 工作流程:
简要介绍如何使用 File Station API
发出请求:
详细说明如何构造 API 请求
解析响应:
描述如何解析响应数据
常见错误代码:
列出所有 File Station API 可能返回的所有常见错误代码
工作示例:
提供请求文件操作的示例
API 工作流程
以下五个步骤且易于遵循的工作流程展示了如何让您的应用程序与 File Station API 交互。
步骤 1:检索 API 信息
首先,您的应用程序需要从目标 DiskStation 检索 API 信息,以了解哪些 API 可在目标 DiskStation 上使用。可以通过 /webapi/query.cgi 使用 SYNO.API.Info API 参数响应中提供的信息包含可用的 API 名称、API 方法、API 路径和 API 版本。一旦您掌握了所有信息,您的应用程序就可以向所有可用的 API 发出进一步的请求。
步骤 2:登录
为了让您的应用程序与 File Station 交互,您的应用程序需要先使用帐户和密码登录。登录过程只是使用 login 方法向 SYNO.API.Auth API 发出请求。如果成功,API 会返回一个授权的会话 ID。您应该保留它并将其传递给其他 API 请求。
第 3 步:发出 API 请求
成功登录后,您的应用程序可以开始向所有可用的 File Station API 发出请求。在下一节“发出请求”中,将给出如何形成有效的 API 请求以及如何解码响应信息的说明。
第 4 步:注销
完成上述步骤后,您的应用程序可以通过 注销 方法。
有五个基本元素可用于构建对任何 API 的有效请求。
API name:
API请求的名字
version:
API请求的版本
path:
API的路径。可以通过请求 SYNO.API.Info 来检索路径信息
method:
API请求的方法
_sid:
授权会话 ID。每个 API 请求都应该通过它,它是从 /webapi/auth.cgi ,通过带有 _sid 参数的 HTTP/HTTPS GET/POST 方法。否则,如果你在 id HTTP/HTTPS header的cookie值,该参数可以忽略。
请求的语法如下:
GET /webapi/<CGI_PATH>?api=<API_NAME>&version=<VERSION>&method=<METHOD>[&<PARAMS>][&_sid=<SID>]
这里 <参数> 表示请求方法的参数,是可选的。请注意,所有参数都需要转义。逗号“,”替换为斜杠“\”,斜杠“\”替换为双斜杠“\\”,因为逗号“,”用于分隔参数中的多个元素。密码相关参数不需要转义,包括 passwd 或密码参数。
请看下面的例子。如果您想在 查询 地址为 http://myds.com:port (HTTP 和 HTTPS 的默认端口分别为 5000 或 5001)对于所有可用 API 方法的列表,对应的参数是:
API name: SYNO.API.Info
version: 1
path: query.cgi
method: query
_sid: query=all
请求将如下所示:
http://myds.com:port/webapi/query.cgi?api=SYNO.API.Info&version=1&method=query&query=all
请注意,可以通过向 SYNO.API.Info 发送请求来获取 API 的路径和支持的版本信息。 SYNO.API.Info 的位置是固定的,因此您始终可以使用 /webapi/query.cgi 请求 SYNO.API.Info 。
所有 API 响应都以 JSON 格式编码,JSON 响应包含以下元素:
在没有方法参数的情况下响应无效请求以获取 File Station 的信息。
http://myds.com:port/webapi/entryFilStation/info.cgi?api=SYNO.FileStation.Info&version=2&method=get
失败响应:
"success": false,
"error": {
"code": 101
使用非法路径响应无效请求以创建文件夹。
http://myds.com:port/webapi/FilStation/info.cgi?api=SYNO.FileStation.CreateFolder&method=create&version=1&folder_path=%2Ftest&name=%3A
失败响应:
"success": false,
"error": {
"code": 1100,
"errors": [
"code": 418,
"path": "/test/:"
响应从 File Station 获取信息的成功请求。
http://myds.com:port/webapi/FilStation/info.cgi?api=SYNO.FileStation.Info&version=2&method=get
成功响应:
"success": true,
"data": {
"is_manager": true,
"hostname": "DS",
"support_sharing": true,
"support_virtual": "cifs,iso"
请注意,为了清楚地演示示例,以下部分中给出的响应示例中仅包含数据对象。
常见错误代码
以下代码是所有 WebAPI 的参数错误或登录失败的常见错误代码。
以下演示了从 DiskStation 请求文件操作的工作示例。要实施此示例,只需将示例中使用的 DiskStation 地址 (myds.com:port) 替换为您的 DiskStation 地址并将 URL 粘贴到浏览器。然后 JSON 响应将显示在响应页面中。
第 1 步:获取 API 信息
为了发出 API 请求,您应该首先 /webapi/query.cgi 以获取用于登录的 SYNO.API.Auth API 信息和用于文件操作的 FileStation API 信息.
http://myds.com:port/webapi/query.cgi?api=SYNO.API.Info&version=1&method=query&
query=SYNO.API.Auth,SYNO.FileStation
"data": {
"SYNO.API.Auth": {
"path": "auth.cgi",
"minVersion": 1,
"maxVersion": 3
"SYNO.FileStation.List": {
"path": "FileStation/file_share.cgi",
"minVersion": 1,
"maxVersion": 1
"success": true
第 2 步:登录
在返回 SYNO.API.Auth 路径和支持的版本信息后,您可以通过请求位于 /webapi/auth.cgi 的 SYNO.API.Auth API 版本 3 来登录 FileStation 会话 。
http://myds.com:port/webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=login&account=admin&
passwd=12345&session=FileStation&format=cookie
"data": {
"sid": "ohOCjwhHhwghw"
"success": true
第 3 步:请求 File Station API
会话登录后,您可以继续调用 SYNO.FileStation.List 中列出共享文件夹的方法。在Step 1的响应中提供了cgi路径和版本,可以通过排除 offset 和 limit 参数来请求所有任务的列表。
http://myds.com:port/webapi/FileStation/file_share.cgi?api=SYNO.FileStation.List&version=1&method=list_share
"data": {
"offset": 0,
"shares": [
"isdir": true,
"name": "video",
"path": "/video"
"isdir": true,
"name": "photo",
"path": "/photo"
"total": 2
"success": true
列表中可以看出 File Station 中有两个共享文件夹。假设您对共享文件夹“照片”感兴趣并想了解有关它的更多详细信息,您可以向 getinfo 方法。在此请求中,您需要添加参数 additional=real_path,owner,time 用于请求详细对象并在响应中传输它们的方法。
http://myds.com:5000/webapi/FileStation/file_share.cgi?api=SYNO.FileStation.List&version=1&
method=getinfo&path=%2Fphoto&additional=real_path,owner,time,perm
"data": {
"files": [
"additional": {
"owner": {
"gid": 100,
"group": "users",
"uid": 1024,
"user": "admin"
"real_path": "/volume1/photo",
"time": {
"atime": 1371630215,
"crtime": 1352168821,
"ctime": 1368769689,
"mtime": 1368769689
"isdir": true,
"name": "photo",
"path": "/photo"
"success": true
第 4 步:注销
完成该过程后,您应该注销当前会话。会话将通过调用 注销 SYNO.API.Auth 中的方法。如果要注销特定会话,可以通过设置 _sid 参数。
http://myds.com:5000/webapi/auth.cgi?api=SYNO.API.Auth&version=1&method=logout&session=FileStation