文档地址: https://t.me/v2ex_post/49722
步骤
Step 1: 获取API信息
首先,您的应用程序需要从目标 DiskStation 获取 API 信息,以了解目标 DiskStation 上可以使用哪些 API。可以通过从 SYNO.API.Info API 向 query.cgi 发出请求来访问此信息。响应中提供的信息包含可用 API 的名称、版本和方法。
Step 2: 登录并获取会话ID
在发送任何 API 请求之前,您需要登录到目标 DiskStation 并获取会话 ID。可以通过向 SYNO.API.Auth API 的 login.cgi 发送请求来进行身份验证,并在响应中获取会话 ID。
Step 3: 发送API请求
一旦您获得了会话 ID,就可以向目标 DiskStation 发送 API 请求。请求必须包括所需的参数和方法名称,并且必须使用 HTTPS 协议进行加密。
Step 4: 处理API响应
一旦您发送了 API 请求,就会收到一个响应。响应将包括有关请求结果的详细信息,例如成功或失败、错误代码和数据(如果适用)。您需要根据响应处理结果并采取适当的措施。
Step 5: 注销会话
当您完成所有 API 请求时,应使用 SYNO.API.Auth API 的 logout.cgi 方法注销会话。这将使会话 ID 失效并确保安全性。
登录
什么是sid值? sid是授权会话ID,它是在登录时由SYNO.API.Auth API返回的。每个API请求都应该传递sid值,以便服务器知道哪个会话正在进行操作。
以下是一个完整的示例,演示如何使用SYNO.API.Auth API登录会话并获取会话ID:
请求:
http://192.168.8.74:5000/webapi/query.cgi?api=SYNO.API.Info&version=1&method=query&query=all
响应:
{
"data": {
"SYNO.API.Info": {
"path": "query.cgi",
"maxVersion": 2,
"requestFormat": "HTTP_GET",
"responseFormat": "JSON",
"version": 1,
"minVersion": 1
}
},
"success": true
}
请求:
http://192.168.8.74:5000/webapi/query.cgi?api=SYNO.API.Auth&version=2&method=login&account=admin&passwd=12345&session=DownloadStation&format=cookie
响应:
{
"data":{
"sid":"ohOCjwhHhwghw"
},
"success":true
}
在上面的响应中,您可以看到名为“sid”的属性,其值为“ohOCjwhHhwghw”。这就是您的会话ID。
现在,您可以使用此会话ID来保持已登录状态,并执行其他需要身份验证的操作。
-
“format=sid”:响应将包含一个名为“sid”的属性,其值为您的会话ID。这是默认格式。
-
“format=token”:响应将包含一个名为“token”的属性,其值为您的会话令牌。令牌是一种更安全的身份验证方式,因为它不需要在每个API请求中发送您的密码。
“sid”参数是每个API请求都需要提供的,而不仅仅是第一次登录会话时。如果您使用“format=cookie”或“format=token”登录会话,则不需要在每个API请求中提供会话ID或令牌。
示范如何获取下载列表
要获取下载列表,您可以使用SYNO.DownloadStation.Task API中的“list”方法。在登录会话后,您可以使用以下URL来请求下载任务列表:
http://192.168.8.74:5000/webapi/DownloadStation/task.cgi?api=SYNO.DownloadStation.Task&version=1&method=list&sid=ohOCjwhHhwghw
在上面的URL中,“api”参数为“SYNO.DownloadStation.Task”,“version”参数为“1”,“method”参数为“list”,而“sid”参数是您的会话ID。如果请求成功,则响应将包含一个名为“tasks”的属性,其中包含所有下载任务的详细信息。例如:
{
"data":{
"offset":0,
"tasks":[
{
"id":"SYNO.DownloadStation.Task.download.1",
"type":"bt",
"username":"admin",
"title":"Ubuntu-20.04-desktop-amd64.iso",
"size":2827056128,
"status":"downloading",
...
},
{
...
}
],
"total":2
},
"success":true
}
在上面的响应中,“tasks”属性是一个数组,其中包含每个下载任务的详细信息。每个任务都有一个唯一的ID、类型、用户名、标题、大小和状态等属性。
其它API 见上面的文档处
通用错误代码
- 100:未知错误
- 101:无效参数
- 102:API不存在
- 103:方法不存在
- 104:版本不存在
- 105:权限不足
- 106:登录失败或会话超时
- 107:API已过期