
# 自定义华为云Astro轻应用API接口
API接口是用户将在应用中开发的脚本、服务编排等包装成自定义REST接口的形式发布出去使用，使得URL地址的表达形式更规范，方便让第三方系统进行调用。
 #### 定义API接口
1. 参考[登录华为云Astro轻应用应用设计器](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_9004.html)中操作，登录应用设计器。
2. 在左侧导航栏中，选择"集成"，单击开放接口后的"+"。 
   也可以在"开始"页面，直接单击"新建开放接口"。
   
   
3. 设置开放接口参数，单击"保存"。 
   图1新建开放接口   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001936099761.png "点击放大")
   表1新建开放接口参数说明 
   | 参数     | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   |:---|:---|
   | 标签     | 新建API接口的标签。 取值范围：1\~64个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | 操作名称   | 新建API接口的操作名称，命名要求如下： - 长度不能超过40个字符。  - 必须以英文字母开头，由英文字母，数字或单下划线组成，且不能以单下划线结尾。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | 版本     | API接口的版本，格式为"x.y.z"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | URL    | API接口路径， 固定以**/service/*{命名空间}__{应用名}* /*{版本}***开头， 后面接API的具体路径。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   | 内容类型   | 请求中的body类型。 其中"multipart/form-data"和"binary-data"用于文件上传接口，选择该内容类型，只能调用post类型的脚本。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | 分类     | API接口所属的分类。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | 描述     | 自定义API接口的描述信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | 允许匿名访问 | 是否可以匿名访问运行环境中该API接口。 勾选表示允许匿名访问，通过运行环境子域名访问此接口时，如果无有效的Token认证信息，则以匿名用户身份继续访问此接口，且不需要做CSRF校验。匿名用户的权限为"Anonymous User Profile"，请确保该权限具备访问该接口的业务权限凭证或者相关资源权限。例如，当该接口有配置业务权限凭证时，给"Anonymous User Profile"权限添加相应业务权限凭证，即可通过运行环境子域名匿名访问该接口。 例如：登录业务应用接口"login"的URL为"/service/*命名空间* __MyApp/1.0.0/login"，运行环境子域名为"test.example.com"，期望可匿名访问该自定义接口，则配置接口时请勾选"允许匿名访问"，且"Anonymous User Profile"权限配置了该接口的业务权限凭证，则匿名用户通过"https://test.example.com/service/*命名空间*__MyApp/1.0.0/login"即可访问该接口。 设置匿名访问时，应遵循以下几项要求： - 需要支持匿名访问自定义接口的账号，必须要设置运行环境子域名。  - 带有合法认证信息来访问允许匿名访问的自定义接口时，优先以合法认证的身份权限来访问。  - 匿名用户身份访问自定义接口，不需要做CSRF校验。  - 不论以什么方式来访问， 认证身份后做的权限校验保持一致。如果配置了业务权限凭证，还是会查看用户权限是否配置相应业务权限凭证。   |
   | 类型     | 选择资源类型，只有服务编排类型的接口能够在服务编排中被调用，其他类型接口只能通过API的形式进行调用。 - 服务编排：定义URL调用的接口类型是服务编排。  - 脚本：定义URL调用的接口类型是脚本。  - 对象：定义URL是操作对象数据，包括对象数据的增删改查。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | 自定义响应  | 是否需要格式化，调用该URL后返回的响应消息。如果勾选，表示对响应消息进行格式化，删除resCode、resMsg、result外层信息，只透传返回的消息。 - 不勾选"自定义响应"，返回如下响应消息： ``` { "resCode": "0", "resMsg": "成功", "result": [ { "equipments": [ { "createdBy": "aaa", "createdBy.__objectType": "User" }, { "createdBy": "aaa", "createdBy.__objectType": "User" } ], "total": "2" } ] } ```   - 勾选"自定义响应"后，只返回如下响应消息： ``` { "equipments": [ { "createdBy": "aaa", "createdBy.__objectType": "User" }, { "createdBy": "aaa", "createdBy.__objectType": "User" } ], "total": "2" } ```                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | 资源     | 根据类型选择需要绑定的资源，如脚本，服务编排或操作的对象名称。 **如果找不到需要绑定的服务编排或脚本，请检查服务编排或脚本是否启用。如果没有启用，请进入[服务编排](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_9131.html)排或[脚本](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_9162.html)设计页面，单击页面左上角的** ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000002183826561.png)**图标，启用服务编排或脚本。**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | 对象操作   | "类型"选择"对象"时，该参数才会显示。 - Insert Record：新增对象数据。  - Update or Insert Record：更新或者新增对象数据。  - Update By ID：按记录ID更新对象数据。  - Delete By ID：按记录ID删除对象数据。  - Query By ID：按记录ID查询对象数据。  - Update By Condition：按条件更新对象数据。  - Delete By Condition：按条件删除对象数据。  - Query By Condition：按条件查询对象数据。                                                                                                                                                                                                                                                   |
   | 方法     | API接口的HTTP方法。 - GET：请求服务器返回指定资源。  - PUT：请求服务器更新指定资源。  - POST：请求服务器新增资源或执行特殊操作。  - DELETE：请求服务器删除指定资源。  - PATCH：请求服务器更新资源的部分内容。当资源不存在时，PATCH可能会去创建一个新的资源。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
      
   
   
4. 返回"集成"页面，单击已创建接口后的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001894300072.png)，选择"查看"，进入接口预览页面。
5. 单击接口后的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001936099729.png)，可查看定义的API信息。
6. 单击"测试一下"，可模拟API接口调用。 
   API接口的请求参数和返回消息体，为绑定的资源（如脚本，服务编排等）所配置的入参和出参。
   图2API接口请求参数信息   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001894300080.png "点击放大")
   图3API接口返回参数信息   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001936099813.png "点击放大")
   
   
 
