如何使用Oracle Rest Data Services发布JSON

时间:2015-02-02 08:13:45

标签: oracle rest oracle-apex

我正在使用Oracle常规数据库(不像NoSQL或其他东西)和oracle rest数据服务。我需要知道如何使用pl / sql获取HTTP消息体。例如,

通过oracle rest数据服务将json对象发送到oracle应用程序表达式,在应用程序表达式中公开消息体并获取用json构造的内容并逐个获取字段。

2 个答案:

答案 0 :(得分:2)

我删除了之前的帖子。您可以将主体作为BLOB并转换为可以使用的字符,但至少在apex.oracle.com的4.2版本的Application Express托管实例中,我使用了自动JSON值绑定。



Begin
  htp.p('JSON ename = ' || :ename);
  htp.p('JSON dept = ' || :dept);

  insert into emp(ename, deptno)
    values (:ename, :dept);
  htp.p('Rows Inserted = ' || sql%rowcount);

end;




您可以通过发布以下内容进行测试:

{" ename":" Seema"," dept":10}

演示位于:https://apex.oracle.com/pls/apex/gjarmiolowski/hr/employees/

确保Content-Type标头设置为application / json

更新:这是一个有效的windows curl命令 curl --header"内容类型:application / json" --request POST --data-ascii" {\" ename \":\" hello \",\" dept \": \" 10 \"}" https://apex.oracle.com/pls/apex/gjarmiolowski/hr/employees/

答案 1 :(得分:2)

如果您安装了4月15日发布的最新http://www.mywebsite.com/images/logo.png。您可以访问使用JSON的优秀API

我在11.2上使用它并且能够处理每个json,从具有多个阵列和4/5级别的简单到非常复杂的对象。 APEX 5.0

如果您不想使用APEX。只需安装运行时环境即可访问API。

接受非常复杂的JSON对象的(真实)POST方法的示例。具有3-5个级别的多个对象和子阵列的数组。 Oracle Apex POST json example

我将整个身体送到包裹中进行嘎吱嘎吱。 (身体)。 :apikey附带标题(此处不适用)。

:body是blob所以如果您的数据库不是UTF8,那么package需要将它转换为clob并进行任何字符集转换。

之后你拿clob并将其解析为json。

apex_json.parse (p_source => l_clob);

在我的例子中,初始对象是一个数组,所以我用

遍历所有项目
for i in 1 .. nvl (apex_json.get_count (p_path => '.'), 0) loop

查找varchar2值的示例

l_app.medication_description := apex_json.get_varchar2 ('[%d].regularMedicationDetails', i);

“i”引用数组中的第n个对象时,。

作为一名经验丰富的PL / SQL程序员,这种设置让我进入了现代网络驱动的世界。