Appearance
部署 API
部署 API 需要使用统一的路由前缀,比如 https://www.deploy.com/prefix
并实现以下接口。
接口认证
接口认证方式通过追加 Request Header
来实现(meta 接口除外),授权信息包括 user
和 token
两个可选项,并通过 meta 接口返回的认证信息的使用方式。
/meta
返回部署服务的元信息,包括支持部署的目标列表 / 是否支持删除接口 / 接口认证方式 等。
yaml
Method: GET
RequestType: JSON
ResponseType: JSON
Query:
- user: $user
url 参数 $user
的内容为登记时提交的授权用户名。
返回内容示例如下:
json
{
"targets": [
"a0.seayooassets.com",
"https://www.seayoo.com/subpath"
],
"supportRemove": true,
"authAddon": [
{
key: "Authorization",
value: "Basic $token"
}
]
}
targets
返回一个数组表示可以部署的目标地址,数组项可以是:
- 域名:协议默认是
https
并且可以部署到此域名下的任意位置 - URL:可以部署到指定 URL 以及子目录的任意位置
如果部署后的资源没有可以访问的 url 地址,则此处仍需要提供一个 url,以让部署服务能够正常运行。此时可以提供一个虚拟的格式合法的 url 地址即可,比如
https://hi.com
,并在/deploy
接口中用于解析需要上传的文件 path 信息。
supportRemove
布尔值,表示是否支持删除接口,默认 false
,如果设置为 true
则会使用删除接口 /remove
authAddon
认证方式通过此字段声明,配置为一个数组,每一项表示要追加的 Request Header
信息,并且 $user
和 $token
为在 KMS 登记部署服务时提交的认证信息。上述示例的效果即添加以下 header 信息如下:
yaml
Authorization: Basic $token
其中 $user / $token 内容将被实际内容替换,如果值没有设定,则以空字符串替换;
如果 authAddon 为 空数组 或者 不设置, 则调用部署接口时不会添加任何认证信息
如果需要多个字段可以类似以下的返回:
json
{
...
"authAddon": [
{
"key": "x-user",
"value": "$user"
},
{
"key": "x-token",
"value": "$token"
}
]
}
以上设置将会在 Request Header 中添加如下信息:
yaml
x-user: $user
x-token: $token
其中 $user / $token 内容将被实际内容替换,如果值没有设定,则以空字符串替换
提示
meta 接口不能对请求进行授权认证,否则会陷入授权逻辑死循环:需要查询 meta 才能得知授权方式,但是查询 meta 又需要授权信息 ...
/deploy
单文件部署接口,需要根据指定的域名和 path 将上传的文件进行部署;
yaml
Method: POST
RequestType: FormData
Header: <...>
Form Body:
# 要部署文件的完整路径以及文件名
- target: https://a0.seayooassets.com/path/to/file.html
# 上传文件的内容
- file: <Buffer>
请使用 HTTP 状态码进行响应,非 200
被认为是错误。如果目标地址的文件已经存在,则直接覆盖并同样给出 200
返回值。
关于部署后是否清理服务器(CDN)缓存,则由接口自行判断和处理。通常可以根据文件类型来决定是否清理缓存或设置文件的缓存策略。
部署接口需要至少支持以下类型文件的部署:
html
htm
json
csv
js
css
txt
yaml
md
svg
xml
ts
ini
/remove
删除单文件接口,需要删除指定 target 的文件并清理可能的服务端(CDN)缓存;
yaml
Method: POST
RequestType: JSON
Header: <...>
Post Body:
{
"target": "https://a0.seayooassets.com/path/to/file.html"
}
请使用 HTTP 状态码进行响应,非 200
被认为是错误。如果目标地址文件不存在,也需要被认为处理成功,需要响应 200
状态码。
删除对应文件后,请同步删除服务端(CDN)缓存,防止文件被继续访问。