
# 如何开放API接口
#### 什么是API接口
API接口是用户将在应用中开发的脚本、服务编排等包装成自定义REST接口的形式发布出去使用，使得URL地址的表达形式更规范，方便让第三方系统进行调用。
#### 如何定义API接口
1. 参考[登录经典应用设计器](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_5025.html)中操作，进入经典版应用设计器。
2. 单击页面左下角的"服务"，进入服务管理页面。 
   图1服务   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933046876.png)
   图2服务管理界面   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932887480.png "点击放大")
   ![](https://support.huaweicloud.com/usermanual-astrozero/public_sys-resources/note_3.0-zh-cn.png)
   - 私有接口：使用私有接口，可以将服务编排的URL映射到内部网关，提供给内部脚本、服务编排等流程调用。对于BO可以定义私有接口。
   
   - 公共接口：使用公共接口，可以将服务编排、脚本或对象的URL映射到外部网关，第三方可以通过OAuth2.0调用。
   
   - 内部网关：仅当前租户能够访问映射到内部网关中的自定义接口，即只有同一租户下的脚本、服务编排等才能调用发布的私有接口。
   
   - 外部网关：其他租户或第三方系统均可访问映射到外部网关中的自定义接口。
    
   
   
3. 单击"新建"，设置接口参数后，单击"保存"。 
   - 标签：新建API接口的标签。
   
   - 操作名称：新建API接口的操作名称。
   
   - 版本：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"权限添加相应业务权限凭证，即可通过运行环境子域名匿名访问该接口。
     - 需要支持匿名访问自定义接口的账号，必须要设置运行环境子域名。
     
     - 带有合法认证信息来访问允许匿名访问的自定义接口时，优先以合法认证的身份权限来访问。
     
     - 匿名用户身份访问自定义接口，不需要做CSRF校验。
     
     - 不论以什么方式来访问， 认证身份后做的权限校验保持一致。如果配置了业务权限凭证，还是会查看用户权限是否配置相应业务权限凭证。
     
     
     例如：登录业务应用接口"login"的URL为"/service/*命名空间* __MyApp/1.0.0/login"，运行环境子域名为"test.example.com"，期望可匿名访问该自定义接口，则配置接口时请勾选"允许匿名访问"，且"Anonymous User Profile"权限配置了该接口的业务权限凭证，则匿名用户通过"https://test.example.com/service/*命名空间*__MyApp/1.0.0/login"即可访问该接口。
     
   
   - 类型：选择资源类型，只有服务编排类型的接口能够在服务编排中被调用，其他类型接口只能通过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/public_sys-resources/note_3.0-zh-cn.png)
     如果找不到需要绑定的服务编排或脚本，请检查服务编排或脚本是否启用。如果没有启用，请进入服务编排或脚本设计页面，单击页面左上角的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000002297474838.png)图标，启用服务编排（[图3]）或脚本（[图4]）。
     图3启用服务编排   
     ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960126189.png "点击放大")
     图4启动脚本   
     ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933046880.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_0000001960126201.png)，可查看定义的API信息。
   
   单击"测试一下"，可模拟API接口调用。
   API接口的请求参数和返回消息体，为绑定的资源（如脚本，服务编排等）所配置的入参和出参。
   图5API接口请求参数信息   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932887492.png "点击放大")
   图6API接口返回参数信息   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001978677862.png "点击放大")
   
   
 
