Skip to content
本页索引

部署 API

部署 API 需要使用统一的路由前缀,比如 https://www.deploy.com/prefix 并实现以下接口。

接口认证

接口认证方式通过追加 Request Header 来实现(meta 接口除外),授权信息包括 usertoken 两个可选项,并通过 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

返回一个数组表示可以部署的目标地址,数组项可以是:

  1. 域名:协议默认是 https 并且可以部署到此域名下的任意位置
  2. 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)缓存,防止文件被继续访问。