如何在Oracle APEX中创建RESTful API并发起GET请求?
嘿,我来帮你搞定这两个Oracle APEX的问题,都是新手刚接触REST服务时容易碰到的情况,别慌~
一、在Oracle APEX中发起RESTful API GET请求的几种方法
1. 用APEX_WEB_SERVICE包(后端PL/SQL调用)
这是服务器端调用REST API的常用方式,适合放在触发器、存储过程或者计算列里执行。比如要调用一个返回员工数据的GET API,代码示例如下:
DECLARE l_response CLOB; l_status NUMBER; BEGIN l_response := APEX_WEB_SERVICE.make_rest_request( p_url => 'http://你的APEX实例地址/ords/你的工作区名/serviceOne/employees', p_http_method => 'GET' ); l_status := APEX_WEB_SERVICE.g_status_code; -- 处理响应:可以输出到调试日志或存储到表中 DBMS_OUTPUT.PUT_LINE('状态码: ' || l_status); DBMS_OUTPUT.PUT_LINE('响应内容: ' || l_response); END; /
注意:要确保你的APEX实例有权访问目标API,必要时需要配置数据库的ACL(访问控制列表)。
2. 在页面组件中用REST数据源(前端可视化展示)
如果要在交互式报表或表单里直接展示REST API返回的数据,步骤很简单:
- 进入你的APEX应用,点击「Shared Components」→「REST Data Sources」
- 点击「Create」,填写API的URL(比如
/ords/你的工作区名/serviceOne/employees),选择HTTP方法为GET,按需配置认证信息 - 创建完成后,在页面添加交互式报表,选择数据源为刚才创建的REST数据源,就能自动加载并展示数据了
3. 用JavaScript(前端动态调用)
如果需要在页面上动态发起请求并实时处理结果,可以用原生JS或者jQuery:
// 原生fetch示例 fetch('/ords/你的工作区名/serviceOne/employees') .then(response => response.json()) .then(data => { // 处理返回的JSON数据,比如渲染到页面指定区域 console.log(data); document.getElementById('employee-list').innerHTML = JSON.stringify(data); }) .catch(error => console.error('请求出错:', error));
或者用jQuery简化写法:
$.get('/ords/你的工作区名/serviceOne/employees', function(data) { console.log(data); $('#employee-list').html(JSON.stringify(data)); });
二、创建RESTful API时找不到"Test"按钮的解决办法
你参考的旧指南里的「Test」按钮,在新版本的APEX(20.1及以后)中已经调整了位置——Oracle更新了RESTful Services的界面布局。按照以下步骤找到测试入口:
- 进入「SQL Workshop」→「RESTful Services」,找到你创建的
serviceOne服务 - 点击服务名称进入详情页,切换到Resources标签页(这是你定义GET/POST等请求方法的地方)
- 在每个资源条目(比如你为emp表创建的GET资源)的右侧,会有一个测试图标(类似播放按钮的样式),点击它就能打开内置的测试界面
- 如果还是找不到,也可以手动构造测试URL直接在浏览器访问:
格式通常是:http://你的APEX实例地址/ords/你的工作区名/serviceOne/你的URI模板
比如你设置的URI模板是/employees,那么测试URL就是http://你的APEX实例地址/ords/你的工作区名/serviceOne/employees,打开后就能看到返回的JSON数据
另外要注意:刚创建的REST服务默认可能是禁用状态,记得在服务列表里把状态改成「Enabled」,否则无法正常访问。
内容的提问来源于stack exchange,提问作者fire frost
相关产品推荐
相关产品推荐

