测试与发布API

开发的API只有通过测试并发布至数据服务市场,用户才可以在数据服务市场中查询并申请调用该API的权限。本文为您介绍如何测试API并将API发布至数据服务市场。

前提条件

在开始执行操作前,请确认您已完成API的创建。更多信息,请参见创建API

API调用/测试直连模式和代理模式说明

数据服务支持直连模式和代理模式调用API,若API关联了行级权限,则根据调用模式确认鉴权方式。

  • 直连模式:在行级权限中申请数据服务应用的行级权限,使用应用进行鉴权。

  • 代理模式:若应用需代理用户的行级权限调用API,需在行级权限中申请数据服务应用的行级权限,再为应用申请API的代理权限,即可代理用户调用API。

说明
  • API的权限管控分成字段级权限及行级权限。其中,行级权限的鉴权模式包括直连模式和代理模式。

  • API关联了行级权限且应用具有代理权限,若DelegationUid参数未设置/为空,则使用直连模式调用API;若DelegationUid非空,则使用代理模式调用API。

API测试页面顶部区域操作

  • 查看域名:在页面顶部可以查看域名,该域名仅用于内部测试,用于客户端调用的域名,请参见查看域名

  • 切换API:支持在页面左上角切换查看已提交或已发布的API。支持根据API的名称或ID模糊搜索API,搜索当前服务项目下有权限的API进行切换,系统将为您推荐您在当前项目下访问过(包括查看、编辑、测试、新增)的最近9API。

  • 切换API运行环境:支持切换API运行环境进行API测试。当运行环境为开发环境时,使用开发数据源进行测试;当运行环境为生产环境时,使用生产数据源进行测试。如果API未发布,则无法切换为生产环境进行测试。

    说明

    APIBasic模式,且运行环境为开发环境时,测试API时会使用生产数据源进行测试。

  • 切换API版本:支持在测试页面的右上角切换版本进行测试。当运行环境为开发环境,支持选择已提交的版本;当运行环境为生产环境,支持选择已发布的版本。

步骤一:测试API

  1. Dataphin首页的顶部菜单栏,选择服务 > 开发

  2. 在左上角选择服务项目,在左侧导航栏选择API服务 > API,进入API页面。

    • API页面单击目标API操作列下的测试图标,进入API测试页面。

    • API页面单击目标API操作列下的更多-版本管理,进入版本管理面板,再单击目标API操作列下的测试,进入API测试页面。

  3. API测试页面,您可以输入参数值来验证返回参数是否符合预期。

    1. 配置业务请求参数列表区域的测试输入值为业务数据中的字段值。

      业务请求参数列表区域展示的参数是您创建API时配置的请求参数。

    2. 配置公共请求参数列表区域的参数。

      • API类型为直连数据源API或服务单元API时,系统根据API不同的请求方式,展示不同的参数(PageStart、PageSizeOrderByList)。

        • 开启分页查询,若API请求方式为LIST,展示PageStart、PageSizeOrderByList参数;若API请求方式为GET,展示OrderByList参数。

        • 关闭分页查询,若API请求方式为LIST,展示OrderByList参数,您可以取消选中隐藏参数,展示PageSizeOrderByList参数。

      • API类型为直连数据源API、服务单元API或组合API且关联行级权限开启时,展示AccountType、DelegationUid参数。

        参数

        描述

        调试输入值

        AccountType

        当使用代理模式认证时,需要指定代理用户的账号类型。

        • ACCOUNT_NAME:Dataphin的用户名。

        • USER_ID: Dataphin内部的唯一ID。

        • SOURCE_USER_ID:源系统账号ID。

        说明

        仅当设置了DelegationUid时,需要配置此参数。若未填写此参数,则默认类型为USER_ID。

        选择指定代理用户的账号类型,支持选择ACCOUNT_NAME、USER_ID、SOURCE_USER_ID。

        DelegationUid

        被代理访问的用户,需根据所选AccountType的类型,传入对应账号ID。设置该参数后,使用代理模式的认证方式。

        仅支持当前租户账号作为DelegationUid。

        apiVersion

        用于指定调用API的版本,默认使用最新版本。

        调试输入值从页面右上角切换版本获取。

        说明

        当运行环境为开发环境,支持apiVersion参数,仅可选择已提交的API进行调用。

        PageStart

        用于定义返回数据从第几条开始展示。

        配置成正整数,例如2。

        PageSize

        用于定义每页返回多少数据。

        配置成正整数,例如56。

        OrderByList

        用于定义多个返回参数的排序方式。如果没有填写,则默认为升序排列。

        调试输入值需要从业务请求参数列表中获取。

    3. API类型为直连数据源API、服务单元API或组合API且关联行级权限开启时,在行级权限列表区域展示当前API版本及环境对应的所关联的已开启的行级权限信息,包括行级权限名称、描述说明。

    4. 可选返回参数列表区域选择返回参数。返回参数的列表为已选择的API版本对应的API返回参数。您需要选择至少一个返回参数才能测试API。

    5. 配置API的协议和返回条数。

      参数

      描述

      协议

      如果您创建API时选择协议是HTTPHTTPS,则调试API时可以选择协议。

      返回条数

      用于定义测试API时返回数据的条数:

      • 如果请求方式为LIST,则支持选择返回条数,最大可返回10000条数据。

      • 请求方式为GET,不支持修改返回条数

  4. 配置完成后,单击返回条数后的调试/测试,进行API与数据源数据的连通性测试。

    • API测试时,支持单击查看脚本,查看SQL的脚本,方便对比查询结果是否符合脚本处理预期。若注册APISQL脚本,则不支持查看。

      说明
      • 调用组合API时,若组合API引用的API有行级权限管控,需将AccountTypeDelegationUid参数传入到引用的API。

      • 使用代理模式调用组合API,仅需申请组合API的代理权限即可。

    • API调用模式为异步模式,API测试/调试后,查询结果将在测试结果区域展示,您可以在测试结果中查看您的运行结果、日志、代码等信息,异步查询的流程请参见异步调用流程说明

      • 查看请求结果:单击调用API页签,再单击返回结果页签,可查看调用APIBody返回的请求结果。

      • 脚本代码:单击调用API页签,再单击脚本代码页签,可查看编写的SQL语句。

      • 查看日志:单击获取查询状态页签,查看API调用时的执行日志。如需取消API测试/调试,可单击取消查询,取消查询请求。

      • 查看查询结果:单击获取查询结果页签,可查看调用APIBody返回的最终查询结果。

  5. 返回结果/测试结果区域,查看测试结果。

    如果测试失败,您可以查看附录:错误码及解决方案

  6. 仅测试API时支持操作。单击底部的API授权按钮,支持将API授权给应用,详情请参见数据服务权限管理

步骤二:发布API

单个发布API

  1. API列表页面,单击目标API操作列下的发布图标。

  2. API发布对话框中,选择需要发布的版本。

    API存在线上版本,系统将校验是否存在参数变更以及依赖,以此判断是否触发项目中设置的发布管控机制您可以对目标API执行去回收去查看操作。

    • 去回收:单击去回收跳转至管理中心 > 权限管理 > 数据服务权限(权限管理下)> API权限页签,当前API权限回收对话框,您可将该API权限回收。

    • 去查看:单击去查看跳转至服务 > 开发 > API页面,系统会为您筛选出当前API,您可以编辑该组合API,去除对该组合API的引用或删除组合API。

      若没有该组合API的权限,您可以联系对应的组合API负责人,进行编辑组合API去除对该API的引用或删除组合API。

      说明
      • 仅超级管理员和数据服务的项目管理员支持回收API权限。

      • 若线上已有发布的版本,则API发布新版本到线上的过程中会对参数进行校验,包括新增必填请求参数、删减请求参数、删减返回参数以及变更请求参数的数据类型,若存在任一变更,API发布将根据所属项目中设置的发布管控机制进行阻塞或发布。

        • 如果API发布管控中API已授权给应用设置为阻塞发布,则需要回收API的权限,才能继续发布。

        • 如果发布管控中API已被组合API引用设置为阻塞发布,则需要编辑组合API去除对该API的引用或删除组合API,才能继续发布。

        • 如果发布管控两个配置项都选择阻塞发布,则需要回收API权限的同时还需要编辑组合API去除对该API的引用或删除组合API,才能继续发布。

  3. 单击确认,将API发布至生产环境。

批量发布API

  1. API列表页面,选中API列表中需发布的API,单击底部的批量发布

  2. API批量发布对话框中,选择需要发布的版本,若API的最新版本为已提交版本,系统默认为您填充此版本。

  3. 单击确认,在API批量发布详情对话框中查看API是否发布成功,若发布失败,可单击错误详情原因后的查看,查看具体失败原因。

    说明
    • 基于逻辑表创建的API不支持批量发布。

    • 批量发布时,若未选择版本,则该API不进行发布。

后续业务应用用户可以在数据服务总览页面查询并申请调用API的权限。

说明
  • 仅已提交的API支持发布到线上。

  • 新版本发布到线上会影响API的调用,您可以在项目中设置不同的发布管控机制,在API发布时会根据其所属项目的配置进行阻塞或发布,详情请参见创建及管理服务项目

  • 基于服务单元创建的API,在发布时会对引用的字段在所属的服务单元中是否存在进行校验;基于数据源创建的API,在发布时会对引用的字段在所属的数据源中是否存在进行校验。

附录:错误码及解决方案

错误代码

代码说明

解决方案

DPN-OLTP-COMMON-000

成功。

无。

DPN.Oltp.Common.Running

运行中。

无。

DPN-OLTP-COMMON-001

系统发生未知异常。

请提交工单,或联系Dataphin的支持人员协助处理。

DPN-OLTP-COMMON-002

参数异常。

请检查参数的正确性。

DPN-OLTP-COMMON-003

不支持。

无。

DPN-OLTP-COMMON-004

SQL解析异常。

SQL语句中未定义字段别名,请检查并修改SQL语句。

DPN-OLTP-COMMON-005

SQL注入检查未通过。

/

DPN-OLTP-ENGINE-000

查询超时。

/

DPN-OLTP-ENGINE-001

参数错误。

检查设置的参数。

DPN-OLTP-ENGINE-002

对象找不到。

请提交工单,或联系Dataphin的支持人员协助处理。

DPN-OLTP-ENGINE-003

不支持。

无。

DPN-OLTP-ENGINE-004

通信表错误。

无。

DPN-OLTP-ENGINE-005

SQL解析失败。

请提交工单,或联系Dataphin的支持人员协助处理。

DPN-OLTP-ENGINE-006

元数据错误。

DPN-OLTP-ENGINE-007

参数处理错误。

DPN-OLTP-ENGINE-008

构建执行模型错误。

DPN-OLTP-ENGINE-009

执行失败。

DPN-OLTP-ENGINE-010

数据源错误。

DPN-OLTP-ENGINE-011

HBase引擎不支持。

无。

DPN-OLTP-ENGINE-012

对象序列化失败。

请提交工单,或联系Dataphin的支持人员协助处理。

DPN-OLTP-ENGINE-013

权限校验失败。

请申请数据表的权限,具体操作请参见申请、续期和交还表权限

获取对应数据表权限后,还是未能解决该问题,请提交工单,或联系Dataphin的支持人员协助处理。

DPN-OLTP-ENGINE-014

Elasticsearch引擎不支持。

无。

DPN-OLTP-ENGINE-015

MongoDB引擎不支持。

无。

DPN-OLTP-ENGINE-016

字段类型错误。

检查配置的字段类型是否与数据源的字段类型不一致。

DPN-OLTP-ENGINE-017

Redis缓存异常。

请提交工单,或联系Dataphin的支持人员协助处理。

DPN-OLTP-ENGINE-018

跨数据源不支持。

无。

DPN-OLTP-ENGINE-019

数据类型编码或者参数类型转换失败。

请提交工单,或联系Dataphin的支持人员协助处理。

DPN-OLTP-ENGINE-20

熔断。

DPN-OLTP-ENGINE-020

应用无API的行级权限代理权限。

请申请API代理权限,请参见管理API权限

DPN-OLTP-ENGINE-21

限流。

您可以配置API限流,以降低请求并发量。

DPN-OLTP-ENGINE-22

查询超时。

/

DPN-OLTP-ENGINE-23

组合API的子API异常。

/

DPN-OLTP-ENGINE-24

无代理权限。

/

DPN-OLTP-ENGINE-018-01

跨数据源不支持Group By。

请检查SQL。

DPN-OLTP-ENGINE-018-02

跨数据源不支持Order By。

DPN-OLTP-ENGINE-018-03

跨数据源不支持没有Where条件。

DPN-OLTP-ENGINE-018-04

跨数据源不支持PageStart不等于0。

DPN-OLTP-ENGINE-018-05

跨数据源不支持在Where条件中存在or的操作。

DPN-OLTP-ENGINE-018-06

跨数据源不支持在一个Select item中有来自多个物理表的字段。

DPN-OLTP-ENGINE-018-07

跨数据源查询必须所有的主键都在。

DPN-OLTP-ENGINE-018-08

HBase namespace不存在。

/

DPN.Oltp.Auth

权限校验失败。

/

DPN.Oltp.Async.JobNotExists

异步API任务不存在。

/

DPN.Oltp.Async.JobStatusNotSupport

异步API任务状态不支持该操作。

/

DPN.Oltp.Async.GetResultError

异步API获取结果失败。

/

DPN.Oltp.Oltp.JsonContentParseError

JSON内容解析失败。

/

DPN.Oltp.Oltp.HttpRequestError

HTTP请求失败。

/

DPN-OLTP-JDBC-001

请求头丢失Session。

检查设置的参数是否正确。

DPN-OLTP-JDBC-002

Session错误。

检查Session IDAccount ID是否匹配。如果匹配,请提交工单,或联系Dataphin的支持人员协助处理。

DPN-OLTP-JDBC-003

用户无权访问数据库。

请申请数据源的权限,具体操作请参见申请数据源权限

获取对应数据表权限后,还是未能解决该问题,请提交工单,或联系Dataphin的支持人员协助处理。

DPN-OLTP-JDBC-004

用户无权访问数据表。

请申请数据表的权限,具体操作请参见申请、续期和交还表权限

获取对应数据表权限后,还是未能解决该问题,请提交工单,或联系Dataphin的支持人员协助处理。

DPN-OLTP-JDBC-005

Account Id出错

检查Account ID的正确性。

DPN-OLTP-JDBC-006

终止查询。

无。

DPN.Oltp.Jdbc.ProjectForbidden

无权修改该项目下的表。

请申请数据表的权限,具体操作请参见申请、续期和交还表权限

获取对应数据表权限后,还是未能解决该问题,请提交工单,或联系Dataphin的支持人员协助处理。

DPN-OLTP-OLAP-001

OLAP客户端查询数据源失败。

请检查数据源后,重连客户端尝试。如果仍失败请提交工单,或联系Dataphin的支持人员协助处理。

DPN-OLTP-OLAP-002

OLAP客户端运行失败。

请提交工单,或联系Dataphin的支持人员协助处理。

DPN.Oltp.Olap.SessionError

OLAPSession错误。

检查Session的正确性。

DPN.Oltp.Olap.SessionNotFound

OLAPSession不存在。

/

后续步骤

测试与发布API后,您就可以在数据服务市场中查询并申请调用的权限。具体操作,请参见调用API