跳到主要内容

静态网站托管

云开发为开发者提供静态网站托管的能力,静态资源(HTML、CSS、JavaScript、字体等)的分发由对象存储 COS 和拥有多个边缘网点的 CDN 提供支持。您可在腾讯云控制台进行静态网站的部署,提供给您的用户访问。目前云开发静态网站托管能力仅在腾讯云云开发控制台支持,小程序 IDE 侧控制台暂不支持。

提示

仅有付费方式为按量付费的环境可开通静态网站托管能力,预付费方式环境不可开通。

云开发的静态网站托管能力,目前在开通环境时,静态网站托管服务不会直接开通,而是需要您在环境中单独开通。

uploadFiles#

新增于 3.1.0 版本

1. 接口描述#

接口功能:上传单个文件,多个文件,文件夹到静态网站托管中

接口声明:async uploadFiles(options: IHostingOptions)

2. 输入参数#

字段必填类型说明
localPathString单个文件或文件夹的本地路径
cloudPathString单个文件或文件夹的云端路径
filesArray<{localPath:string; cloudPath:string}>由 localPath 和 cloudPath 文件信息组成的数组,用于上传多个文件
onProgressFunction上传进度回调事件,会在上传过程中多次触发
onFileFinish(err, data) => void每个文件上传完成后的回调,如果上传失败,则回调 err
ingoreString 或 Array<String>忽略文件模式

上传文件夹时,请指定 localPathcloudPath参数,文件夹下的所有文件会上传到指定目录下,不包含文件夹本身。

当需要上传多个文件时,请指定 files 参数。

cloudPath为空时,文件会被上传到根目录下。

3. 返回结果#

4. 示例代码#

import CloudBase from '@cloudbase/manager-node'
const { hosting } = new CloudBase({  secretId: 'Your SecretId',  secretKey: 'Your SecretKey',  envId: 'Your envId' // 云开发环境ID,可在腾讯云云开发控制台获取})
async function test() {  // 上传文件夹  await hosting.uploadFiles({    localPath: './dir',    cloudPath: '',    ignore: ['**/ignore.*']  })  let fileCount = 0  // 上传多个文件  await hosting.uploadFiles({    files: [      {        localPath: 'test/storage/test_data/data.txt',        cloudPath: 'hosting/test_data/data.txt'      }    ],    ignore: ['**/ignore.*'],    onFileFinish: () => {      fileCount++    }  })  console.log(fileCount) // 1}
test()

listFiles#

新增于 3.1.0 版本

1. 接口描述#

接口功能:获取全部文件列表

接口声明:async listFiles(): Promise<IListFileInfo[]>

2. 输入参数#

3. 返回结果#

字段类型说明
KeyString对象键
LastModifiedString对象最后修改时间,为 ISO8601 格式,如 2019-05-24T10:56:40Z date
ETagString对象的实体标签(Entity Tag),是对象被创建时标识对象内容的信息标签,可用于检查对象的内容是否发生变化
SizeString对象大小,单位为 Byte
OwnerString对象持有者信息
StorageClassString对象存储类型,标准存储 STANDARD

4. 代码示例#

import CloudBase from '@cloudbase/manager-node'
const { hosting } = new CloudBase({  secretId: 'Your SecretId',  secretKey: 'Your SecretKey',  envId: 'Your envId' // 云开发环境ID,可在腾讯云云开发控制台获取})
async function test() {  const res1 = await hosting.listFiles()  for (let item in res1) {    console.log(item)  }}test()

deleteFiles#

新增于 3.1.0 版本

1. 接口描述#

接口功能:删除静态网站托管的文件或文件夹

接口声明:async deleteFiles(options: IHostingCloudOptions)

2. 参数说明#

字段必填类型说明
cloudPathString文件或文件夹的云端路径
isDirBooleancloudPath 是否为文件夹

3. 返回结果#

4. 示例代码#

import CloudBase from '@cloudbase/manager-node'
const { hosting } = new CloudBase({  secretId: 'Your SecretId',  secretKey: 'Your SecretKey',  envId: 'Your envId' // 云开发环境ID,可在腾讯云云开发控制台获取})
async function test() {  await hosting.deleteFiles({    cloudPath: 'files/data.txt',    isDir: false  })}
test()

关于路径#

  • localPath 为本地文件或文件夹的路径,为 目录/文件名 的形式,如 ./index.jsstatic/css/index.css 等。
  • cloudPath 为文件或文件夹的相对根目录的路径,为 目录/文件名 的形式,如 index.jsstatic/css/index.js 等。
注意事项

Windows 系统中 localPath 为本地路径形式,是系统可以识别的路径,通常使用 \ 分隔符。cloudPath 是云端文件路径,均需要使用 / 分隔符。

findFiles#

新增于 3.2.0 版本

1. 接口描述#

接口功能:搜索静态网站托管的文件(支持按前缀搜索文件名称)

接口声明:async findFiles(options: IFindOptions)

2. 参数说明#

字段必填类型说明
prefixString匹配前缀,限定响应中只包含指定前缀的文件(对象)
markerBoolean起始对象键标记,从该标记之后(不含)按照 UTF-8 字典序返回对象键条目
maxKeysBoolean单次返回最大的条目数量,默认值为 1000,最大为 1000

3. 返回结果#

字段必填类型说明
NameString存储桶的名称,格式为\<BucketName-APPID>
PrefixString对象键匹配前缀,对应请求中的 prefix 参数
MarkerString起始对象键标记,从该标记之后(不含)按照 UTF-8 字典序返回对象键条目,对应请求中的 marker 参数
MaxKeysNumber单次响应返回结果的最大条目数量,对应请求中的 max-keys 参数
ContentsIContentItem对象条目

IContentItem#

字段必填类型说明
KeyString对象键
LastModifiedString对象最后修改时间,为 ISO8601 格式,如 2019-05-24T10:56:40Z
ETagString对象的实体标签(Entity Tag),是对象被创建时标识对象内容的信息标签,可用于检查对象的内容是否发生变化
SizeNumber对象大小,单位为 Byte
OwnerIOwnerInfo对象持有者信息
StorageClassString对象存储类型。STANDARD_IA,ARCHIVE 等

IOwnerInfo#

字段必填类型说明
IDString对象持有者的 APPID
DisplayNameString对象持有者的名称

4. 示例代码#

import CloudBase from '@cloudbase/manager-node'
const { hosting } = new CloudBase({  secretId: 'Your SecretId',  secretKey: 'Your SecretKey',  envId: 'Your envId' // 云开发环境ID,可在腾讯云云开发控制台获取})
async function test() {  const { Contents } = await hosting.findFiles({    prefix: 'hosting/',    marker: '/'  })
  console.log(Contents)}
test()

setWebsiteDocument#

新增于 3.2.0 版本

1. 接口描述#

接口功能:配置静态网站的错误文档,索引文档,重定向规则

接口声明:async setWebsiteDocument(options: IBucketWebsiteOptiosn)

2. 参数说明#

字段必填类型说明
indexDocumentString文档地址
errorDocumentString文档地址
routingRulesIRoutingRules文档地址

IRoutingRules#

字段必填类型说明
keyPrefixEqualsString指定前缀重定向的路径,替换指定的 folder/
httpErrorCodeReturnedEqualsString指定重定向错误码,只支持配置 4XX 返回码,优先级高于 ErrorDocument
replaceKeyWithString替换整个 Key 为指定的内容
replaceKeyPrefixWithString替换匹配到的前缀为指定的内容,设置 KeyPrefixEquals 时 才可设置

注:设置前缀匹配 keyPrefixEquals 时,替换内容可指定 replaceKeyWith(替换整个路径) 或 replaceKeyPrefixWith(替换前缀),设置指定重定向错误码 httpErrorCodeReturnedEquals 时,只能指定 replaceKeyWith(替换整个路径)

3. 返回结果#

字段必填类型说明
statusCodeNumber请求返回的 HTTP 状态码,如 200、403、404 等
headersObject请求返回的头部信息

4. 示例代码#

import CloudBase from '@cloudbase/manager-node'
const { hosting } = new CloudBase({  secretId: 'Your SecretId',  secretKey: 'Your SecretKey',  envId: 'Your envId' // 云开发环境ID,可在腾讯云云开发控制台获取})
async function test() {  const res = await hosting.setWebsiteDocument({    errorDocument: 'error.html',    indexDocument: 'success.html',    routingRules: [      {        keyPrefixEquals: 'test.html',        replaceKeyWith: 'index.html'      },      {        keyPrefixEquals: 'test1.html',        replaceKeyPrefixWith: 'index1.html'      },      {        httpErrorCodeReturnedEquals: '400',        replaceKeyWith: 'index.html'      }    ]  })
  if (res.statusCode === 200) {    // todo  }}
test()

CreateHostingDomain#

新增于 3.2.0 版本

1. 接口描述#

接口功能:绑定自定义域名

接口声明:async CreateHostingDomain(options: IBindDomainOptions)

2. 参数说明#

字段必填类型说明
domainString自定义域名
certIdString证书 ID

3. 返回结果#

字段必填类型说明
RequestIdString请求 ID

4. 示例代码#

import CloudBase from '@cloudbase/manager-node'
const { hosting } = new CloudBase({  secretId: 'Your SecretId',  secretKey: 'Your SecretKey',  envId: 'Your envId' // 云开发环境ID,可在腾讯云云开发控制台获取})
async function test() {  const res = await hosting.CreateHostingDomain({    domain: 'xxx.xxx.xxx',    certId: 'xxxxx'  })  console.log(res)}
test()

deleteHostingDomain#

新增于 3.3.0 版本

1. 接口描述#

接口功能:解绑自定义域名

接口声明:async deleteHostingDomain(options: IDeleteDomainOptions)

2. 参数说明#

字段必填类型说明
domainString自定义域名

3. 返回结果#

字段必填类型说明
RequestIdString请求 ID

4. 示例代码#

import CloudBase from '@cloudbase/manager-node'
const { hosting } = new CloudBase({  secretId: 'Your SecretId',  secretKey: 'Your SecretKey',  envId: 'Your envId' // 云开发环境ID,可在腾讯云云开发控制台获取})
async function test() {  const res = await hosting.deleteHostingDomain({    domain: 'xxx.xxx.xxx'  })  console.log(res)}
test()

getWebsiteConfig#

新增于 3.3.0 版本

1. 接口描述#

接口功能:获取静态网站配置

接口声明:async getWebsiteConfig()

2. 参数说明#

3. 返回结果#

字段必填类型说明
statusCodeNumber请求返回的 HTTP 状态码,如 200、403、404 等
headersObject请求返回的头部信息
WebsiteConfigurationIWebsiteConfig静态网站配置

IWebsiteConfig#

字段必填类型说明
IndexDocumentIIndexDocument索引文档
ErrorDocumentIErrorDocument错误文档
RoutingRulesArray<[IRoutingRule](#IRoutingRule)>静态网站配置

IIndexDocument#

字段必填类型说明
SuffixString指定索引文档

IErrorDocument#

字段必填类型说明
KeyString指定通用错误返回

IRoutingRule#

字段必填类型说明
ConditionICondition指定重定向发生的条件,前缀匹配重定向和错误码重定向只能指定一个
RedirectIRedirect指定满足重定向 conditon 时重定向的具体替换规则

ICondition#

字段必填类型说明
HttpErrorCodeReturnedEqualsString指定重定向错误码,只支持配置 4XX 返回码,优先级高于 ErrorDocument
KeyPrefixEqualsString指定前缀重定向的路径,替换指定的 folder/

IRedirect#

字段必填类型说明
ReplaceKeyWithString替换整个 Key 为指定的内容
ReplaceKeyPrefixWithString替换匹配到的前缀为指定的内容,Conditon 为 KeyPrefixEquals 才可设置

4. 示例代码#

import CloudBase from '@cloudbase/manager-node'
const { hosting } = new CloudBase({  secretId: 'Your SecretId',  secretKey: 'Your SecretKey',  envId: 'Your envId' // 云开发环境ID,可在腾讯云云开发控制台获取})
async function test() {  const getConfig = await hosting.getWebsiteConfig()  console.log('getConfig :', getConfig)}
test()

tcbCheckResource#

新增于 3.3.0 版本

1. 接口描述#

接口功能:获取域名配置

接口声明:async tcbCheckResource(options: ICheckSourceOptions)

2. 参数说明#

字段必填类型说明
domainsArray<String>域名列表

3. 返回结果#

字段必填类型说明
RecordCountNumber记录域名数
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
DomainsArray<[ITcbDomainInfo](#ITcbDomainInfo)>域名清单

ITcbDomainInfo#

字段必填类型说明
DomainString域名
DomainIdNumber域名 Id
StatusStringprocess , online , offline 域名状态
DomainConfigITcbDomainConfig域名配置
CNameString域名 CName

ITcbDomainConfig#

字段必填类型说明
ReferITcbRefererReferer 防盗链配置
CacheArray<[ITcbCache](#ITcbCache)>缓存策略列表
IpFilterIIpFilterIP 黑白名单配置
IpFreqLimitIIpFreqLimitIP 限频配置

ITcbReferer#

字段必填类型说明
SwitchStringreferer 黑白名单配置开关 on:开启 off:关闭
RefererRulesArray<[ITcbRefererRule](#ITcbRefererRule)>referer 黑白名单配置规则 switch 为 on 时必填

ITcbRefererRule#

字段必填类型说明
RefererTypeStringreferer 配置类型, whitelist:白名单, blacklist:黑名单
ReferersArray<String>referer 内容列表,列表最大长度 400 个, 不需要http://开头,填写形如:www.test.com
AllowEmptyBoolean是否允许空 referer, true:允许空 refere, false:不允许空 referer

ITcbCache#

字段必填类型说明
RuleTypeString规则类型 all 全部文件,suffix 按后缀名匹配, path 文件夹类型按目录匹配, file 全路径匹配 四选一 必填。
RuleValueString规则内容 依据规则类型而不同 以;分割 必填,suffix 类型每个后缀不超过 10 字节,总长度不超过 512 字节,file 不能以/或结尾,path 不能包含; `
CacheTtlNumberNumber

IIpFilter#

字段必填类型说明
SwitchStringIP 黑白名单配置开关,on:开启,off:关闭
FilterTypeStringIP 黑白名单类型,whitelist:白名单,blacklist:黑名单
FiltersArray<String>IP 黑白名单列表,支持 X.X.X.X 形式 IP,或 /8、 /16、/24 形式网段,最多可填充 50 个白名单或 50 个黑名单

IIpFreqLimit#

字段必填类型说明
SwitchStringIP 限频配置开关, on:开启, off:关闭
QpsNumber设置每秒请求数限制,超出限制的请求会直接返回 514

4. 示例代码#

import CloudBase from '@cloudbase/manager-node'
const { hosting } = new CloudBase({  secretId: 'Your SecretId',  secretKey: 'Your SecretKey',  envId: 'Your envId' // 云开发环境ID,可在腾讯云云开发控制台获取})
async function test() {  const res = await hosting.tcbCheckResource({    domains: ['domain']  })  console.log('res:', res)}
test()

tcbModifyAttribute#

新增于 3.3.0 版本

1. 接口描述#

接口功能:域名配置

接口声明:async tcbModifyAttribute(options: IModifyOptions)

2. 参数说明#

字段必填类型说明
DomainString域名
DomainIdNumber域名 Id
DomainConfigITcbDomainConfig域名配置

3. 返回结果#

字段必填类型说明
DomainIdNumber域名 Id
OriginITcbOrigincos 源域名
CosPrivateAccessStringyes,no 是否开始 cos 私有读
AuthenticationITcbAuthentication防盗链 key
CacheArray<[ITcbCache](#ITcbCache)>缓存策略
StaticWebITcbStatic静态网站
RootAccessStringno off,是否访问根目录
RequestIdString唯一请求 ID,每次请求都会返回

ITcbOrigin#

字段必填类型说明
MasterString主站
SlaveString副站

ITcbAuthentication#

字段必填类型说明
SwitchStringon/off 开启或关闭’
SecretKeyString开启时必填,用户计算签名的秘钥,仅支持字母和数字组合,6 到 32 位
SignParamStringurl 串中签名的字段名,字母数字组合,不能以数字开头,低于 32 位,默认为 sign
TimeParamStringurl 串中时间的字段名,字母数字组合,不能以数字开头,,低于 32 位,默认为 t
ExpireTimeNumber开启时必填过期时间,小于 31536000 秒,单位为秒

ITcbStatic#

字段必填类型说明
SwitchString开启,关闭静态网站功能
PathString静态网站跳转的路径,以/开头,不支持路径包含空白和`;

4. 示例代码#

import CloudBase from '@cloudbase/manager-node'
const { hosting } = new CloudBase({  secretId: 'Your SecretId',  secretKey: 'Your SecretKey',  envId: 'Your envId' // 云开发环境ID,可在腾讯云云开发控制台获取})
async function test() {  const res = await hosting.tcbCheckResource({    domains: ['domain']  })  const domainId = res.Domains[0].DomainId
  const setRes = await hosting.tcbModifyAttribute({    domain: 'domain',    domainId,    domainConfig: {      Refer: {        Switch: 'on',        RefererRules: [          {            AllowEmpty: false,            RefererType: 'blacklist',            Referers: ['www.test11.com']          }        ]      },      IpFilter: {        Switch: 'on',        FilterType: 'blacklist',        Filters: ['xxx.xxx.xxx.xxx']      },      IpFreqLimit: {        Switch: 'on',        Qps: 100      },      Cache: [        {          RuleType: 'suffix',          RuleValue: '.jpg',          CacheTtl: 60        }      ]    }  })
  console.log('setRes:', setRes)}
test()