
# 自定义公共接口
#### 使用说明
使用公共接口，可以将原生服务API发布到外部网关，第三方系统可以通过OAuth2.0调用AstroZero上的原生服务。
#### 前提条件
- 已接入服务实例，具体操作请参考[注册Native Service](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0269.html)。
- 已在需要调用原生服务的应用中，添加待调用的原生服务。添加后，在该应用的服务编排中，才可以调用Native服务。
  ![](https://support.huaweicloud.com/usermanual-astrozero/public_sys-resources/note_3.0-zh-cn.png)
  - "Internal dependencies"为内部依赖文件夹，导入的BO服务或者Native服务，在打包上层应用时也会随应用打包发布出去。
  
  - "External dependencies"为外部依赖文件夹，导入的BO服务或者Native服务，在打包上层应用时不会打包出去。
   
  图1应用中添加原生服务   
  ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932887140.png) 
- 若AstroZero开启了根证书校验，请先上传原生服务的根证书，再调用原生服务。关于根证书的更多内容，请参考[开启根证书校验](https://support.huaweicloud.com/usermanual-astrozero/astrozero_06_0019.html#section1)。
 
#### 操作步骤
1. 参考[如何进入经典开发环境](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0003.html#astrozero_05_0003__section47067717379)中操作，登录经典版开发环境。
2. 在"首页 \> 项目 \> 我的应用"中，单击已创建的原生服务。
3. 在原生服务开发页面，单击"公共接口"。
4. 在公共接口页面，单击"新建"。
5. 在"新建自定义接口"页面，设置接口参数。 
   图2"新建自定义接口"配置页面   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932887136.png "点击放大")
   - 名称：新建公共接口的名称。
   
   - 版本：公共接口的版本号。
   
   - URL：新URL地址。其中，"/native"是固定值，其次是"/*Native Service* *名称* /版本号"，剩下部分进行自定义。
     自定义的URL需要符合一定规则，规则如下：
     - 必须以单个"/"开头。
     
     - 可以配置多级路径，两个或者多个"/"之间必须有内容。
      
   
   - 描述：公共接口的描述信息。
   
   - 操作名称：需要开放给外部第三方系统的操作名称，取值来源于[配置API](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0266.html)中配置的操作名称。
   
   - 资源：与镜像文件中的接口路径一致，无需配置。
   
   - 方法：映射后调用的方法名，如GET（查询）、PUT（增加）、POST（修改）、DELETE（删除），无需配置。
   
   - CSRF校验：调用该公共接口时，是否需要做CSRF校验。
     - 否：不需要做CSRF校验，可直接调用该公共接口。
     
     - 是：需要做CSRF校验，在调该公共接口前，需要先调接口*"https://AstroZero域名/u-route/baas/sys/v1.0/csrf/get"* ，获取鉴权result取值（调该接口时需要在请求消息头上设置"access-token"，获取方法可参考[配置API](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0266.html)中章节介绍），然后再调该公共接口请求消息头上设置"csrf-token"值为鉴权result值，即可调用该公共接口。
     
     
     GET方法不需要做CSRF校验，其他方法可根据需要配置是否做CSRF校验。
     
   
   
   
   
6. 设置完成后，单击"保存"。
7. （可选）设置访问该自定义接口的用户业务权限。 
   若没有配置业务权限，则只有业务用户可访问该接口，平台用户不可访问。若配置了业务权限，则只有拥有该业务权限的用户才可以访问该接口。
   例如，配置只有拥有业务权限"A"的用户，才可访问该接口。
   1. 参考[如何登录经典版环境配置](https://support.huaweicloud.com/usermanual-astrozero/astrozero_06_2092.html)中操作，登录经典版环境配置。
   
   2. 在左侧导航栏中，选择"用户管理 \> 业务权限凭证"，创建业务权限"A"。
      图3创建业务权限"A"   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933046520.png "点击放大") 
   
   3. 选择"用户管理 \> 权限配置"，编辑用户的权限，在"业务权限凭证"页签配置接入业务权限"A"。
      图4用户权限配置   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960285661.png "点击放大") 
   
   4. 在公共接口详情页面，单击"编辑"，配置业务权限，将左侧业务权限"A"加入到右侧"已选择业务权限凭证列表"中，单击"保存"。
      图5配置业务权限   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932887128.png "点击放大")
      
      业务用户访问该接口URL前，还需要创建如下的服务编排，用于获取token值。其中，赋的值"PL"是一个公式变量，表达式为"PORTALUSERLOGIN("*pu1* ")"，"*pu1*"为业务用户名，配置该服务编排的出参为"token"。
      图6创建服务编排   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960285657.png "点击放大")
      执行该服务编排后，在输出参数中，获取token值。
      ```
      {
        "interviewId": "002N000000RBLY9scgDY",
        "outputs": {
          "token": "************"
        }
      }
      ```
      
    
   
   
 
