为了更好的发挥数据价值,Oracle数据库提供了很多贴心的服务,例如ORDS(Oracle REST Data Service),能将数据库能力发布为RESTful API。Oracle自治数据库(ADW和ATP)中预置了ORDS功能,开箱即用,方便多渠道的数据收集和数据访问,例如物联网信息、移动APP以及其他云原生应用和企业级应用。
本文将介绍如何使用ADW的ORDS功能,包括创建用户、启用ORDS服务、发布RESTful API,ORDS的Open API支持等内容。

1.创建用户
为什么要创建新用户?因为ADMIN是管理员,Oracle的最佳实践推荐您使用业务用户进行ORDS和ML等功能。我们将创建一个TEST用户进行ADW的ORDS功能测试。
以ADMIN 账户登录 WEB SQL DEVELOPER 后,执行如下内容:
CREATE USER TESTUSER3 IDENTIFIED BY "<YOUR PASSWORD>";GRANT CONNECT TO TESTUSER3;GRANT RESOURCE TO TESTUSER3;GRANT CREATE TABLE TO TESTUSER3;
创建两个试验对象EMP表。
CREATE TABLE TESTUSER3."EMP2K"( "EMPNO" VARCHAR2(40),"ENAME" VARCHAR2(40),"MANAGER" VARCHAR2(40),"DEPT" VARCHAR2(40),"LOCATION" VARCHAR2(40),"SAL" VARCHAR2(40),"HIREDATE" VARCHAR2(40),CONSTRAINT "EMP2K_PK" PRIMARY KEY ("EMPNO", "ENAME")/CREATE TABLE TESTUSER3."EMP"( "EMPNO" VARCHAR2(40),"ENAME" VARCHAR2(40),"MANAGER" VARCHAR2(40),"DEPT" VARCHAR2(40),"LOCATION" VARCHAR2(40),"SAL" VARCHAR2(40),"HIREDATE" VARCHAR2(40),CONSTRAINT "EMP_PK" PRIMARY KEY ("EMPNO")/
仍然用ADMIN用户执行下面的语句即可启用'TESTUSER3'的ORDS。
BEGINords_admin.enable_schema(p_enabled => TRUE,p_schema => 'TESTUSER3',p_url_mapping_type => 'BASE_PATH',P_url_mapping_pattern => 'TESTUSER3',p_auto_rest_auth => NULL);END;
语句执行完成后,可以在ADMIN用户的“数据库用户”中看到'TESTUSER3'的REST已经启用,通过点击下方红色方框内的链接即可进入'TESTUSER3'的Database Actions(之前叫SQL Web)。

2、发布RESTful API
我们用'TESTUSER3'用户登录Database Actions,将Table发布为RESTful API非常简单,右键单击Table,在弹出菜单中选择REST->启用。接受默认值,记录RESTful API的端点URL,然后点击启用按钮。

对象端点的URL的格式:
https://<hostname>:<port>/ords/schema_alias/object_alias/
本文为:
https://r6wqfbczolvzy7x-dbyyyy.adb.ap-seoul-1.oraclecloudapps.com/ords/testuser3/emp2k/
下面通过REST API增加记录。
方法 | POST |
Endpoint | https://r6wqfbczolvzy7x-dbyyyy.adb.ap-seoul-1.oraclecloudapps.com |
Resource | ords/testuser3/emp2k/ |
请求报文 | { "empno": "100", "ename": "Scott100", "manager": "King", "dept": "SE", "location": "Beijing", "sal": "1500", "hiredate": "3/6/21" } |
通过SoapUI测试工具,将请求发送到ORDS。

在表中查询验证,我们看到ID=100的记录已经产生了。

3、ORDS的Open API
ORDS支持OpenAPI,这会给最终用户提供极大的方便性,利用OpenAPI可以很方便的生成REST API的文档,甚至可以生成客户端代码,从而大大的简化集成开发过程。
ADW的ORDS内置了OpenAPI catalog,这里会列出所有发布的REST API,以及每个REST API详细信息的超链接。
OpenAPI catalog的URL:
https://<hostname>:<portnumber>/ords/<schemaname>/open-api-catalog
例如路径(可以直接用浏览器打开):
https://xxxxxxx-db.adb.ap-seoul-1.oraclecloudapps.com/ords/TESTUSER3/open-api-catalog/

将上面的服务描述信息导入Swagger(https://editor.swagger.io/)
现在,屏幕右侧就呈现出了emp2k的服务解析,分别描述了查询全集、新增、删除、单行查询和修改的方法。

通过Generate Client,ADW的ORDS可以支持多种语言调用该服务的基础代码。您可以选择最适合您的开发语言进行服务端和客户端代码的自动生成。例如点击Java就可以下载调用该服务的客户端的Java代码。

至此,您已经了解了在ADW中使用ORDS的基本功能。您可关注我们的公众号,发送 ADWAPI 获取更多关于ADW API的资讯。
编辑:殷海英





