首页 > 解决方案 > ORDS RESTful oracle-apex - 一种公式化 JSON 响应(POST 方法)

问题描述

我是 oracle-apex 和 ORDS 的新手。我的问题是:当我试图在 oracle apex 上构建一个 RESTful Web 服务时,从一个程序,并使用:

    l_response := apex_web_service.make_rest_request(
        p_url =>l_rest_url,
        p_http_method => 'POST',
        p_body => l_request_body
    );

从提出请求。

在 ORDS 处理程序定义中,我定义了:

declare
 l_response_body clob;
begin
l_response_body := '{"conf_code":"'||sys_guid()|| '","status":"APPROVED"}';

INSERT INTO JSON_TIMECARD_APPROVAL (id, json_data)
VALUES (sys_guid(),l_response_body);

:xxResponse :=l_response_body;

当 xxResponse 被定义为 OUT 参数和源类型时:RESPONSE。

我很想得到 JSON 格式的响应。

当我尝试调用我的网络服务(我的网络 api https://apex.oracle.com/pls/apex/eliranhaa/timecards/approval/ )时,. 参数输入:

p_body = 
{"timecard": [
  {
    "timecard_id":214804582301489177025033231688226094978
    ,"employee_id":214804582301403343291840593016821956482
    ,"week_of":"2020-18-03T00:00:00Z"
  }
  ]
}

The Outcome: 
{"DATA":"{\"conf_code\":\"A3695DE33828CA50E0530C4072644591\",\"status\":\"APPROVED\"}"}

我不知道为什么结果返回为字符串而不是 Json 格式(响应返回为 CLOB TYPE)。

我有来自 web api 的参考 https://apex.oracle.com/pls/apex/timecards/timecard/approval/ 顺便说一句,这个结果就是我想要的 web 服务。

Tnx 伊莱兰

标签: web-servicesoracle-apex

解决方案


突出的第一件事是你打sys_guid了两次电话。您不想返回与您插入的值相同的值吗?

我不知道为什么结果返回为字符串而不是 Json 格式

您看到的是您的 JSON 数据被不正确地转义,因为您试图将单个 JSON 值作为输出。尝试打破它。

例如,我创建了一个如下所示的处理程序:

在此处输入图像描述

这是响应,这是我认为您正在寻找的(见第 12 行): 在此处输入图像描述


推荐阅读