API 参考
上传应用
向 Square Cloud 发送应用。该接口的速率限制为每 3 秒 1 次请求。
curl --request POST \
--url https://api.squarecloud.app/v2/apps \
--header 'Authorization: YOUR_API_KEY' \
--form 'file=@./application.zip'
import fs from 'node:fs';
const form = new FormData();
form.append('file', new Blob([fs.readFileSync('./application.zip')]), 'application.zip');
const response = await fetch('https://api.squarecloud.app/v2/apps', {
method: 'POST',
headers: { Authorization: 'YOUR_API_KEY' },
body: form,
});
import requests
with open('application.zip', 'rb') as f:
response = requests.post(
'https://api.squarecloud.app/v2/apps',
headers={'Authorization': 'YOUR_API_KEY'},
files={'file': ('application.zip', f, 'application/zip')},
)
{
"status": "success",
"response": {
"id": "945f574e6cc14ea6818f91d7d56de101",
"name": "Estrelinha Legal",
"description": "Nossa, fui enviada na velocidade da luz! ✨",
"domain": null,
"ram": 1024,
"cpu": 6,
"language": {
"name": "JavaScript",
"version": "recommended"
}
}
}
上传(Upload)会根据一个 zip 压缩包创建一个全新的应用:它会检测运行时及其版本,在当前 RAM 使用率最低的集群上配置一个容器,并启动它。此操作适用于首次部署;若要向已存在的应用推送更改,请改用提交应用,由于它不需要重新配置容器,速度会更快。
调用者的套餐必须至少有 256 MB 的可用内存,上传才会被接受,且 zip 大小上限为 100 MB。响应字段取决于你的
squarecloud.config:description 和 subdomain 仅在其中设置时才会出现,language 会报告检测到的运行时及其版本。请求的速率限制为每个用户每 3 秒 1 次上传。
应用运行起来后,可以使用启动、停止和重启来管理它,并使用获取应用状态来查看其状态。
参数
file
必填
要上传的应用必须压缩为 zip 文件(.zip),且 Content-Type 必须为 multipart/form-data。
响应
string
指示调用是否成功。成功时为
success,否则为 error。object
curl --request POST \
--url https://api.squarecloud.app/v2/apps \
--header 'Authorization: YOUR_API_KEY' \
--form 'file=@./application.zip'
import fs from 'node:fs';
const form = new FormData();
form.append('file', new Blob([fs.readFileSync('./application.zip')]), 'application.zip');
const response = await fetch('https://api.squarecloud.app/v2/apps', {
method: 'POST',
headers: { Authorization: 'YOUR_API_KEY' },
body: form,
});
import requests
with open('application.zip', 'rb') as f:
response = requests.post(
'https://api.squarecloud.app/v2/apps',
headers={'Authorization': 'YOUR_API_KEY'},
files={'file': ('application.zip', f, 'application/zip')},
)
{
"status": "success",
"response": {
"id": "945f574e6cc14ea6818f91d7d56de101",
"name": "Estrelinha Legal",
"description": "Nossa, fui enviada na velocidade da luz! ✨",
"domain": null,
"ram": 1024,
"cpu": 6,
"language": {
"name": "JavaScript",
"version": "recommended"
}
}
}
常见错误
| 代码 | HTTP | 说明 |
|---|---|---|
INVALID_CONTENT_TYPE | 415 | 请求体不是 multipart/form-data。 |
INVALID_FILE | 400 | 表单数据中未找到文件字段。 |
INVALID_FILENAME | 400 | 文件名包含路径分隔符、.. 或控制字符。 |
INSUFFICIENT_MEMORY | 400 | 账户在其套餐下的可用内存少于 256 MB。 |
UPLOAD_ABORTED | 400 | 客户端在上传完成前断开了连接。 |
STORAGE_UPLOAD_FAILED | 400 | 文件上传到存储失败;请稍后重试。 |
CLUSTER_SELECTION_FAILED | 400 | 没有可用的集群来托管该应用。 |
EMPTY_RESPONSE | 400 | 集群未返回可用的响应。 |
UPLOAD_FAILED | 400 | 处理上传时发生了意外错误。 |
FILE_TOO_LARGE | 413 | 上传超过了 100 MB 的大小限制。 |
CLUSTER_MAINTENANCE_TRY_LATER | 503 | 由于维护,应用配置暂时不可用。 |
⌘I
curl --request POST \
--url https://api.squarecloud.app/v2/apps \
--header 'Authorization: YOUR_API_KEY' \
--form 'file=@./application.zip'
import fs from 'node:fs';
const form = new FormData();
form.append('file', new Blob([fs.readFileSync('./application.zip')]), 'application.zip');
const response = await fetch('https://api.squarecloud.app/v2/apps', {
method: 'POST',
headers: { Authorization: 'YOUR_API_KEY' },
body: form,
});
import requests
with open('application.zip', 'rb') as f:
response = requests.post(
'https://api.squarecloud.app/v2/apps',
headers={'Authorization': 'YOUR_API_KEY'},
files={'file': ('application.zip', f, 'application/zip')},
)
{
"status": "success",
"response": {
"id": "945f574e6cc14ea6818f91d7d56de101",
"name": "Estrelinha Legal",
"description": "Nossa, fui enviada na velocidade da luz! ✨",
"domain": null,
"ram": 1024,
"cpu": 6,
"language": {
"name": "JavaScript",
"version": "recommended"
}
}
}

