跳到主要内容
Version: 1.0.0

MySQL RESTful API

功能介绍

这里给出了调用 mysql 所有操作的API,以及每个API的参数参考。

请求域名

支持以下三种域名访问方式:

  1. https://{envId}.api.tcloudbasegateway.com/v1/rdb/rest/{table}
  2. https://{envId}.api.tcloudbasegateway.com/v1/rdb/rest/{schema}/{table}
  3. https://{envId}.api.tcloudbasegateway.com/v1/rdb/rest/{instance}/{schema}/{table}
  • envId 是环境id
  • instance 是数据库实例标识
  • schema 是数据库名
  • table 是表名

如果使用系统数据库,推荐方式 1

接入指引

调用以下接口需要传递 AccessToken,格式如Authorization: Bearer <token>。Token 获取方式参考:https://docs.cloudbase.net/http-api/basic/access-token

请求编码

当发起请求前请进行 url 编码,如:

原始请求

curl -i -X GET 'https://{{host}}/v1/rdb/rest/course?select=name,position&name=like.%张三%&title=eq.文章标题'

编码后请求

curl -i -X GET 'https://{{host}}/v1/rdb/rest/course?select=name,position&name=like.%%E5%BC%A0%E4%B8%89%&title=eq.%E6%96%87%E7%AB%A0%E6%A0%87%E9%A2%98'

请求头和返回头

请求头参数说明示例
Accept支持 `application/json`、`application/vnd.pgrst.object+json`控制数据返回格式Accept: application/json
Content-Type支持 `application/json`、`application/vnd.pgrst.object+json`返回Content-Type: application/json
X-EnvId环境idX-EnvId: tcb-xxx
X-Db-Instance数据库实例标识系统默认数据库标识 default,自定义实例标识可在云开发控制台查看X-Db-Instance: default
Content-Profile写操作数据库名指定数据库名,系统默认数据库名使用环境idContent-Profile: tcb-xxx
Accept-Profile读操作数据库名指定数据库名,系统默认数据库名使用环境idAccept-Type: tcb-xxx
Prefer操作依赖的特征值- `return=representation` 写操作,返回数据体和数据头 - `return=minimal` 写操作,不返回数据体只返回头,写操作默认类型 - `count=exact` 读操作,指定 count 计数 - `resolution=merge-duplicates` upsert操作,合并冲突项 - `resolution=ignore-duplicates` upsert操作,忽略冲突项Prefer: return=representation
Preference-Applied使用请求时Prefer的类型返回信息使用请求时的Prefer,会将对应的特征信息以此返回,某些情况下会有默认值Preference-Applied: return=representation
Content-Range分页信息- 当查询时指定 Prefer: count=exact 时会返回分页信息入 0-1/2,其中0表示起始位,1表示偏移量,2表示总数 (注意,此处的起始位、偏移量并非 mysql 中的 offset、limit关键字含义,而是指查询后的数据位置,通常配合 limit 使用) - 当写操作时指定 return=representation 或 return=minimal (默认) 时,会返回分页信息,如 *-*/2,其中2表示受影响行数Content-Range: 0-1/2

HTTP 状态码与错误码

错误码HTTP状态码说明
InternalError.SYS_ERR500系统内部错误
InvalidParameter.INVALID_PARAM400请求参数无效
AuthFailure.DataSourceOperationAuthFailure403鉴权失败,请在权限模块设置合适的权限
AuthFailure.SetOwnerNotAllowed400不允许设置用户标识字段
FailedOperation.EmptyDatabaseEndpoint503数据库端点为空
FailedOperation.DatabaseConnectError503建立数据库连接失败
ResourceNotFound.InstanceNotFound404未找到数据库实例
ResourceNotFound.TableNotFound404未找到表
ResourceNotFound.ColumnNotFound400未找到列
FailedOperation.TaskNotFound500未找到任务
FailedOperation.ConcurrentImportNowAllowed500导入任务已存在,请等待当前导入任务完成
FailedOperation.EmptyFile500文件为空
FailedOperation.FileContainsZeroDataRows500文件不包含任何数据行
FailedOperation.InvalidFileContent500文件内容无效
FailedOperation.DownloadFileFailed500下载文件失败
UnsupportedOperation.TooManyTables503表数量超过限制
FailedOperation.BadApiRequest400无效请求
FailedOperation.TdsqlPaused503实例正在恢复中,请稍后重试连接
FailedOperation.DatabaseExecSqlError400执行SQL错误
FailedOperation.DatabaseSchemaError400数据库架构错误
InvalidParameter.ResponseUnacceptableSingleError406响应不符合单条记录要求
FailedOperation.DatabaseBuildSqlError500构建SQL错误
FailedOperation.DatabaseDataProcessError500数据处理错误
AuthFailure.AuthError401权限错误

注意点

  1. 所有 POST、PATCH、DELETE 一样,请求头带 Prefer: return=representation 表示有返回体,不带表示无回包只有返回头
  2. POST、PATCH、DELETE 的返回体通常是 [] json array,如果请求头指定了 Accept: application/vnd.pgrst.object+json,那么会返回 {} json object
  3. 如果指定 Accept: application/vnd.pgrst.object+json,但是数据是大于 1 的量,则会报错