oracle数据发布为REST数据服务

参照

https://docs.oracle.com/en/database/oracle/oracle-rest-data-services/21.4/aelig/developing-REST-applications.html#GUID-A1CD111F-724B-4E91-8202-FA899EE521F1

https://docs.oracle.com/en/database/oracle/oracle-rest-data-services/21.4/qsord/get-started-with-oracle-rest-data-services.html#GUID-4F651A96-1E4F-4048-AE70-3136AC2A409A

概念术语

RESTful service:一个遵从RESTful风格的HTTP web service

Resource module:一个用来将相关resource templates组织在一起的单元

Resource template:一个单独的RESTful service,能够请求一些URIs

URI pattern:resource template的一个pattern,可以是route pattern,也可以是URI template,鼓励使用route pattern

Route pattern:一种pattern,将URI的路径部分分解成它的组成部分。例如,/:object/:id?将匹配/emp/101(匹配一个请求,该请求是在带有101 id 的emp resource中找the item),并且也会匹配/emp/(匹配for emp resource资源的请求,是因为:id参数被?标注了,这意味着id parameter是可选的)

URI template:一个简单的语法,即一个给定的resource template能够处理,定义URIs(们)的特定patterns(们)。例如,the pattern employees/{id} 将匹配任何path以employees/开头的URI ,例如employees/2560。

Resource handler:为resource template对应的HTTP方法提供处理逻辑。例如,先前所说的resource template的 GET HTTP方法的处理逻辑,如下所示:

select empno, ename, dept from emp where empno = :id

HTTP operation:HTTP(HyperText Transport Protocol)定义了若干标准方法,它们可以作用于resources。这些方法包括:GET(获取即读取resource内容们)、POST(存储一个新resource)、PUT(更新一个现有resource)、DELETE(移除一个resource)

发布数据

表视图

表、视图都可以直接发布为RESTful service,要将一个表或者视图做成能REST访问,按照如下步骤:

  1. 创建一个用户,本文中可直接使用之前安装ords时用的test用户。
  2. 创建一个表,并插入测试数据,直接使用之前安装ords时用的test用户的ttest表。
  3. 首先使test用户能够REST,在SQL Developer中,右键test用户的连接,选择REST Services -> Enable RESTful Services

启用,但不进行授权管理。

点击【完成】

Enable ttest table,在SQL Developer中,右键ttest表,选择REST Services -> Enable RESTful Services。

启用对象,但不启用权限管理

点击【完成】

现在模式(即用户)test中的表ttest就被作为一个REST HTTP端点被暴露出来了。此时GET、DELETE、PUT、POST以及metadata-catalog端点都是同时生成暴露的。

在浏览器中,输入URL

访问ttest表http://192.168.12.55:8080/ords/test/ttest

访问模式包含哪些表即元数据:http://192.168.12.55:8080/ords/test/metadata-catalog

详细进行以下数据库操作时调整表ttest,增加两列数据

alter table ttest add c2 varchar2(100);

alter table ttest add c3 varchar2(100);

alter table ttest add c4 number(10,0);

truncate table ttest

insert into ttest (c1,c2,c3,c4) values('c','cc','ccc',1);

insert into ttest (c1,c2,c3,c4) values('y','yy','yyy',2);

insert into ttest (c1,c2,c3,c4) values('h','hh','hhh',3);

commit;

以下内容均使用Postman进行的测试

查询

可以指定过滤,也支持分页

查询条件是Filter即一种json对象。按照json形式书写即可。

插入

表可以进行插入,视图不一定,要符合oracle规则

查询确认

更新

表必须有主键,并且没有触发器给主键分配值。

alter table ttest add constraint pk_ttest primary key(c4);

KeyValues是主键值

存在则更新,不存在则新增。

除了主键值,其他没有被json赋值的字段,均被置为null。主键值即使赋值为别的值,也不会变动,仍然会是原来的主键值,例如本例中的4,即使在json中赋值为5,但最终结果仍然是4,也就说已有的主键值不能被更新。

删除

sql查询验证

sql查询

可以直接在用户(模式):REST数据服务 -> 模块 创建sql查询的REST Service。

也可以创建REST服务连接,通过连接创建sql查询的REST Service。以下按照第二种方式的步骤创建sql查询的REST Service。

Oracle REST Data Services提供了一个REST API(被称为Resource Modules API),该API可以让Oracle SQL Developer去创建和编辑RESTful service。这种方式是当你没法直接访问数据库时的一种方式(之前描述的是直接访问数据库的方式添加RESTful Service)。Resource Modules API的访问是被保护的,访问它的用户要有正确的角色,并且从SQL Developer访问时还要有相应的授信。具体步骤如下:

备注:发布数据,可以使用创建ords时的数据库用户(模式)test操作,但是稍后的注册客户端必须要使用2.2.1中创建的用户操作。

创建用户

在Oracle REST Data Services安装的目录,输入如下命令

java -jar ords.war user test_developer "SQL Developer"

创建连接

创建RESTful连接。在SQL Developer中,选择 view -> REST Data Service -> Development。

在REST Development面版,右击 REST Data Services -> Connect

在RESTful Service Connection对话框,点击【+】,增加一个连接。

在RESTful Services连接对话框中,输入必要的信息。

点击【确定】

点击【确定】,按照提示,输入用户test_developer的密码。

创建模块

在REST Development view,右击模块节点,点击新建模块

在新建模块页面输入信息

指定模板,输入URI,其余保持默认即可

指定处理(handler即get等)

点击【完成】

handler

为get resource handler定义一个查询。

在REST Development界面,展开至最末级,get节点。右击选择打开。

在SQL工作表中输入 查询语句 select * from ttest

在REST Development界面,右击模块节点下的4test节点,单击【上载】,弹出对话框,点击【确定】。

在Postman中输入URL,http://192.168.12.55:8080/ords/test/testm/ttestget

查询参数

添加参数

绑定参数

上载

Postman验证如下,?p1=c&p4=1,参数必须写全。这样才能完整赋值。否则没有被赋值的参数,会默认是null。

但是查询参数不一定都是必输项。p1给值,p4不给值,查询不到任何结果。所以改造如下。

再次【上载】

Postman验证

  • 11
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值