
# 注册微服务实例 - RegisterMicroserviceInstance
#### 功能介绍
创建微服务后就可以注册该微服务的实例。
注册微服务实例时，需提供该微服务实例相关的信息。
instanceId可定制，如果定制了，再次注册就直接全内容覆盖；如果没有定制，系统自动生成id，如果endpoints内容重复，则使用原来的id。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-cse/cse_06_0081.html)。
- 如果使用身份策略授权，当前API调用无需身份策略权限。
 
#### URI
POST /v4/{project_id}/registry/microservices/{service_id}/instances
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                            |
|:---|:---|:---|:---|
| project_id | 是    | String | 请填固定值：default。                                                                                                |
| service_id | 是    | String | 微服务唯一标识。字符长度为1\~64，正则表达式为\^.\*$。获取方法请参考[查询所有微服务信息](https://support.huaweicloud.com/api-cse/cse_06_0039.html)。 |
   
#### 请求参数
表2请求Header参数 
| 参数              | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|:---|
| Authorization   | 否    | String | 若ServiceComb引擎专享版开启了安全认证，此参数必填。否则，无此参数。 开启了安全认证的ServiceComb引擎专享版Token，格式为： ``` Authorization:Bearer {Token} ``` Token获取方法，请参考[获取ServiceComb引擎专享版用户Token](https://support.huaweicloud.com/api-cse/cse_06_0035.html)。       |
| X-Authorization | 否    | String | 若ServiceComb引擎专享版开启了安全认证，此参数必填。否则，无此参数。 开启了安全认证的ServiceComb引擎专享版Token，格式为： ``` X-Authorization:Bearer {Token} ``` Token获取方法，请参考[获取ServiceComb引擎专享版用户Token](https://support.huaweicloud.com/api-cse/cse_06_0035.html)。 |
   
表3请求Body参数 
| 参数       | 是否必选 | 参数类型                                                                                                   | 描述       |
|:---|:---|:---|:---|
| instance | 是    | [MicroServiceInstance] object | 微服务实例信息。 |
   
 表4MicroServiceInstance 
| 参数             | 是否必选 | 参数类型                                                                                       | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|:---|
| instanceId     | 否    | String                                                                                     | 实例id，唯一标识。创建实例，instanceId由service-center产生。                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| serviceId      | 否    | String                                                                                     | 微服务唯一标识，创建实例时，以url里面的为准，不用这里的serviceId。                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| version        | 否    | String                                                                                     | 微服务版本号。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| hostName       | 是    | String                                                                                     | 主机信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| endpoints      | 否    | Array of strings                                                                           | 访问地址信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| status         | 否    | String                                                                                     | 实例状态。 **取值范围：** - UP：实例健康。  - DOWN：实例不健康。  - STARTING：实例正在启动。  - OUTOFSERVICE：实例停止对外提供服务。   **默认取值：** UP |
| properties     | 否    | Object                                                                                     | 微服务扩展属性，可以自定义KEY和相应的Value。长度最小1字节。                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| healthCheck    | 否    | [HealthCheck] object       | 健康检查信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| dataCenterInfo | 否    | [DataCenterInfo] object | 数据中心信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| timestamp      | 否    | String                                                                                     | 实例创建时间戳，自动生成。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| modTimestamp   | 否    | String                                                                                     | 更新时间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   
 表5HealthCheck 
| 参数       | 是否必选 | 参数类型    | 描述                     |
|:---|:---|:---|:---|
| mode     | 是    | String  | 心跳模式push/pull。         |
| port     | 否    | Integer | 端口。                    |
| interval | 是    | Integer | 心跳间隔（秒），当值小于5秒时，按5秒注册。 |
| times    | 是    | Integer | 最大尝试请求次数。              |
   
 表6DataCenterInfo 
| 参数            | 是否必选 | 参数类型   | 描述    |
|:---|:---|:---|:---|
| name          | 是    | String | 区域名字。 |
| region        | 是    | String | 区域。   |
| availableZone | 是    | String | 可用区。  |
   
#### 响应参数
**状态码： 200**
表7响应Body参数 
| 参数         | 参数类型   | 描述    |
|:---|:---|:---|
| instanceId | String | 实例ID。 |
   
**状态码： 400**
表8响应Body参数 
| 参数           | 参数类型   | 描述      |
|:---|:---|:---|
| errorCode    | String | 错误代码。   |
| errorMessage | String | 错误信息。   |
| detail       | String | 详细定位信息。 |
   
**状态码： 500**
表9响应Body参数 
| 参数           | 参数类型   | 描述      |
|:---|:---|:---|
| errorCode    | String | 错误代码。   |
| errorMessage | String | 错误信息。   |
| detail       | String | 详细定位信息。 |
   
#### 请求示例
注册一个微服务实例，其主机信息为localhost，健康检查的心跳模式为push，心跳间隔为30s，所在region为r1，名字为dc，可用区为az1。
```
POST https://{endpoint}/v4/{project_id}/registry/microservices/{service_id}/instances
{
  "instance" : {
    "endpoints" : [ "grpc://127.0.1.312:9980", "rest://127.0.0.111:8081" ],
    "hostName" : "localhost",
    "status" : "UP",
    "properties" : {
      "_TAGS" : "A, B",
      "attr1" : "a",
      "nodeIP" : "127.0.0.1"
    },
    "dataCenterInfo" : {
      "name" : "dc",
      "region" : "r1",
      "availableZone" : "az1"
    },
    "healthCheck" : {
      "mode" : "push",
      "interval" : 30,
      "times" : 3
    }
  }
}
```
#### 响应示例
**状态码： 200**
注册成功。
```
{
  "instanceId" : "8540bb8b693c4ad1a7fb6a756c415244"
}
```
#### 状态码
| 状态码 | 描述      |
|:---|:---|
| 200 | 注册成功。   |
| 400 | 错误的请求。  |
| 500 | 服务内部错误。 |
   
#### 错误码
请参见[ServiceComb错误码](https://support.huaweicloud.com/api-cse/cse_06_0110.html)。
