构造请求

REST API请求的组成,并以调用IAM服务的获取用户Token说明如何调用GaussDB(DWS) API,该API获取用户的Token可以用于调用其他GaussDB(DWS) API时鉴权。

请求URI

请求URI由如下部分组成:

{URI-scheme}://{Endpoint}/{resource-path}?{query-string}

  • URI-scheme:

    表示用于传输请求的协议,当前所有GaussDB(DWS) API均采用HTTPS协议。

  • Endpoint:

    指定承载REST服务端点的服务器域名或IP,不同服务不同区域的Endpoint不同,您可以从地区和终端节点获取。

  • resource-path:

    资源路径,也即GaussDB(DWS) API访问路径。从具体GaussDB(DWS) API的URI模块获取。

  • query-string:

    查询参数,是可选部分,并不是每个GaussDB(DWS) API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”。

注意事项:

  • 为查看方便,在每个具体GaussDB(DWS) API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。

示例:

  • https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens

    如上所示:例如您需要获取IAM在“华北-北京四”区域的Token,则需使用“华北-北京四”区域的Endpoint(iam.cn-north-4.myhuaweicloud.com),并在获取用户Token的URI部分找到resource-path(/v3/auth/tokens)。
请求方法

HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。

  • GET:

    请求服务器返回指定资源。

  • PUT:

    请求服务器更新指定资源。

  • POST

    请求服务器新增资源或执行特殊操作。

  • DELETE

    请求服务器删除指定资源,如删除对象等。

  • HEAD

    请求服务器资源头部。

  • PATCH

    请求服务器更新资源的部分内容。当资源不存在的时候,PATCH可能会去创建一个新的资源。

示例:

  • POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens

    如上所示:在获取用户Token的URI部分,您可以看到其请求方法为“POST”。

请求消息头

附加请求头字段,如指定的URI和HTTP方法所要求的字段。

  • x-sdk-date:

    请求的发生时间,格式为(YYYYMMDD'T'HHMMSS'Z')。

    取值为当前系统的GMT时间。

  • Host:

    请求的服务器信息,从GaussDB(DWS) API的URL中获取。值为hostname[:port]。端口缺省时使用默认的端口,https的默认端口为443。

  • Content-Type(必选):

    发送的实体的MIME类型。推荐用户默认使用application/json,如果GaussDB(DWS) API是对象、镜像上传等接口,媒体类型可按照流类型的不同进行确定。

  • Content-Length:

    请求body长度,单位为Byte。

  • X-Project-id:

    project_id,项目ID。请参考获取项目ID章节获取。

  • X-Auth-Token(使用Token认证时必选):

    户Token。

    用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。

    请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值。

  • X-Language:

    请求语言。

示例:

  • POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens


    Content-type: application/json

    添加消息头后的请求如上所示:对于获取用户Token接口,由于不需要认证,所以只添加“Content-type”即可。

请求消息体(可选)

请求消息体通常以结构化格式(如JSON或XML)发出。

  • 每个接口的请求消息体内容不同。

    并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口不需要消息体,消息体具体内容需要根据具体接口而定。

  • 若请求消息体中的参数支持中文,则中文字符必须为UTF-8编码。

    与请求消息头中Content-type对应,传递除请求消息头之外的内容。

示例

  • 调用GaussDB(DWS) “创建快照”API接口:


    POST https://{Endpoint}/v1.0/89cd04f168b84af6be287f71730fdb4b/snapshots


    {


    "snapshot" : {


    "name" : "snapshot-3",


    "cluster_id" : "44b277eb-39be-4921-be31-3d61b43651d7",


    "description" : "Snapshot-3 description"


    } }

    注意调用该接口前用户已身份认证(Token认证),获得操作GaussDB(DWS) API的权限。其中:


    name为快照名称。


    cluster_id为创建快照的集群ID。


    description为快照描述,若不指定,描述为空。


认证鉴权(Token 认证)

调用接口支持使用Token认证。Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用GaussDB(DWS) API的时候将Token加到请求消息头,从而通过身份认证,获得操作GaussDB(DWS) API的权限。

Token认证

Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。


  • Token可通过调用获取用户Token接口获取,调用GaussDB(DWS) API需要project级别的Token,即调用获取用户Token接口时,请求body中auth.scope的取值需要选择project,如下所示:


    POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens


    Content-type: application/json


    { "auth": {


    "identity": {


    "methods": [


    "password" ],


    "password": {


    "user": {


    "name": "user_name",


    "password": "********",


    "domain": {


    "name": "domainname"


    } } } },


    "scope": {


    "project": {


    "id": "xxxxxxxxxxxxxxxxxx"


    } } } }

    对于获取用户Token接口,您可以从接口的请求部分看到所需的请求参数及参数说明。其中加粗的斜体字段需要根据实际值填写。其中:


    user_name为用户名。


    domainname为用户所属的帐号名称,可在我的凭证页面获取。


    ********为用户登录密码。


    xxxxxxxxxxxxxxxxxx为项目ID,可参考获取项目ID章节获取。

获取Token后,再调用其他GaussDB(DWS) API接口时,您需要在请求消息头中添加“X-Auth-Token”,其值即为Token。

  • 例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示:


    GET https://iam.cn-north-4.myhuaweicloud.com/v3/auth/projects


    Content-type: application/json


    X-Auth-Token: ABCDEFJ....

调用GaussDB(DWS) API接口

您可以调用GaussDB(DWS)的接口如下所示:

返回结果

请求发送以后,您会收到响应,包含状态码、响应消息头和消息体。

响应消息体

状态码

  • 状态码是一组从1xx到5xx的数字代码,状态码表示了请求响应的状态,完整的状态码列表请参见状态码

响应消息头

  • 对应请求消息头,响应同样也有消息头,如“Content-type”。

    对于获取用户Token接口,返回的消息头,其中“x-subject-token”就是需要获取的用户Token。

响应消息体

  • 响应消息体通常以结构化格式(如JSON或XML)返回,与响应消息头中Content-type对应,传递除响应消息头之外的内容。

示例

  • 调用成功正常返回示例:


    {


    "snapshot" : {


    "id" : "2a4d0f86-67cd-408a-8b66-017454fb7793"


    } }

    以上返回示例为GaussDB(DWS)的“创建快照”API接口。其中,id表示创建成功的快照ID。

  • 调用出错示例:


    {


    "error_msg": "The format of message is error",


    "error_code": "DWS.5149"


    }

    当GaussDB(DWS) API接口调用出错时,会返回错误码及错误信息说明。其中,error_code表示错误码,error_msg表示错误描述信息。

调用GaussDB(DWS) API相关视频

如何调用华为云RESTful API

06:57

如何调用华为云RESTful API

如何调用API-Token认证

06:17

如何调用API-Token认证

如何调用GuassDB(DWS) API接口示例

01:39

如何调用GuassDB(DWS) API接口示例