
# 示例1：创建公网域名解析
#### 场景描述
当您想在Internet上通过域名访问您的网站时，可以通过华为云的云解析服务为域名添加解析记录。
下面介绍如何通过调用[创建公网域名 - CreatePublicZone](https://support.huaweicloud.com/api-dns/dns_api_62001.html)和[创建记录集 - CreateRecordSetWithLine](https://support.huaweicloud.com/api-dns/dns_api_64001.html)接口创建公网域名和添加记录集。API的调用方法请参见[如何调用API](https://support.huaweicloud.com/api-dns/zh-cn_topic_0037134405.html)。
![](https://support.huaweicloud.com/api-dns/public_sys-resources/note_3.0-zh-cn.png)
通过IAM服务获取到的Token有效期为24小时，需要使用同一个Token鉴权时，可以先将Token缓存，避免频繁调用。
#### 前提条件
- 已经通过第三方域名注册商完成域名"example.com"的注册。
- 如果域名"example.com"在中国大陆地区注册，需要完成域名实名认证审核。
- 已经完成网站服务器的搭建，并获取网站的IP地址。
- 如果网站服务器在中国大陆地区部署，需要完成网站域名和IP地址的备案。
  - 若在华为云[搭建网站服务器](https://support.huaweicloud.com/bestpractice-ecs/ecs_web_0001.html)，则通过华为云的备案中心进行备案，详细内容请参见[什么是备案](https://support.huaweicloud.com/icprb-icp/zh-cn_topic_0115815923.html)。
  
  - 若在其他云服务商处搭建网站服务器，则通过对应的云服务商进行备案。
   
 
#### 涉及API
当您使用Token认证方式完成认证鉴权时，需要获取用户Token并在调用接口时增加"X-Auth-Token"到业务接口请求消息头中。
- IAM获取token的API
- DNS创建公网Zone的API
- DNS创建Record Set的API
 
#### 具体步骤
1. Token认证，具体操作请参考[认证鉴权](https://support.huaweicloud.com/api-dns/dns_api_30003.html)。
2. 在Request Header中增加"Content-Type"和"X-Auth-Token"。
3. 在Request Body中传入参数如下：
   ```
   {
       "name": "example.com.",  //域名（必选String）
       "description": "This is an example zone.",  //域名的描述信息（可选String）
       "zone_type": "public",  //域名类型（可选String）
       "email": "xx@example.org",  //管理该域名的管理员邮箱（可选String）
       "ttl": 300,   //默认生成的SOA记录中有效缓存时间（可选String）
   }
   ```
   
4. 发送"POST https://DNS的Endpoint/v2/zones"。
5. 请求消息发送后，收到响应消息。
   ![](https://support.huaweicloud.com/api-dns/public_sys-resources/note_3.0-zh-cn.png)
   - 响应消息包括成功和失败两类情况，本文以响应成功为例进行介绍。
   
   - 若请求消息响应失败则会返回错误码及对应的错误信息说明，详细错误码信息请参见[错误码](https://support.huaweicloud.com/api-dns/ErrorCode.html)。
   
   - 响应消息的要素说明请参见[创建公网域名 - CreatePublicZone](https://support.huaweicloud.com/api-dns/dns_api_62001.html)。
   
   - 响应消息的返回值请参见[状态码](https://support.huaweicloud.com/api-dns/dns_api_80002.html)。
    
   请求成功的响应消息举例如下：
   ```
   STATUS CODE 202
   ```
   ```
   {
       "id": "2c9eb155587194ec01587224c9f90149",
       "name": "example.com.",
       "description": "This is an example zone.",
       "email": "xx@example.com",
       "ttl": 300,
       "serial": 1,
       "masters": [],
       "status": "PENDING_CREATE",
       "links": {
           "self": "https://Endpoint/v2/zones/2c9eb155587194ec01587224c9f90149"
       },
       "pool_id": "00000000570e54ee01570e9939b20019",
       "project_id": "e55c6f3dc4e34c9f86353b664ae0e70c",
       "zone_type": "public",
       "created_at": "2016-11-17T11:56:03.439",
       "updated_at": null,
       "record_num": 0
   }
   ```
   
6. 在Request Header中增加"Content-Type"和"X-Auth-Token"。
7. 在Request Body中传入参数如下：
   ```
   {
       "name": "example.com.", //域名（必选String）
       "description": "This is an example record set.", //记录集的描述信息（可选String）
       "type": "A", //记录集类型（必选String）
       "ttl": 3600, //记录集有效缓存时间（可选Integer）
       "records": [ 
           "192.168.10.1", 
           "192.168.10.2"
       ] //记录集的值（必选List<String>）
   }
   ```
   
8. 发送"POST https://DNS的Endpoint/v2/zones/{zone_id}/recordsets"，其中，zone_id为待添加记录集的域名ID。
9. 请求消息发送后，收到响应消息。
   ```
   STATUS CODE 202
   ```
   ```
   {
       "id": "2c9eb155587228570158722b6ac30007",
       "name": "example.com.",
       "description": "This is an example record set.",
       "type": "A",
       "ttl": 300,
       "records": [
           "192.168.10.1",
           "192.168.10.2"
       ],
       "status": "PENDING_CREATE",
       "links": {
           "self": "https://Endpoint/v2/zones/2c9eb155587194ec01587224c9f90149/recordsets/2c9eb155587228570158722b6ac30007"
       },
       "zone_id": "ff8080825b8fc86c015b94bc6f8712c3",
       "zone_name": "example.com.",
       "create_at": "2017-04-22T08:17:08.997",
       "update_at": null,
       "default": false,
       "project_id": "e55c6f3dc4e34c9f86353b664ae0e70c"
   }
   ```
   
 
