【发布时间】:2020-09-02 21:21:49
【问题描述】:
我成功创建了一个post服务,接受xml结构的请求体中的数据,但是现在需要从请求体中获取一个json类型的数组并进行处理,但是我找不到示例或文档对于这个解决方案。
【问题讨论】:
标签: post plsql oracle-apex
我成功创建了一个post服务,接受xml结构的请求体中的数据,但是现在需要从请求体中获取一个json类型的数组并进行处理,但是我找不到示例或文档对于这个解决方案。
【问题讨论】:
标签: post plsql oracle-apex
使用如下例定义的 REST API,您可以使用同一端点处理 JSON 和 XML。使用 Content-Type 标头,将信息发送到 API 的用户/应用程序可以指定他们是发送 JSON 还是 XML。
我使用 ORDS 19.2 和 Oracle 19c 测试了以下代码。
BEGIN
ORDS.ENABLE_SCHEMA (p_enabled => TRUE,
p_url_mapping_type => 'BASE_PATH',
p_url_mapping_pattern => 'api-test',
p_auto_rest_auth => FALSE);
ORDS.DEFINE_MODULE (p_module_name => 'v1', p_base_path => '/v1/');
ORDS.DEFINE_TEMPLATE (p_module_name => 'v1', p_pattern => 'demo');
ORDS.DEFINE_HANDLER (p_module_name => 'v1',
p_pattern => 'demo',
p_method => 'POST',
p_source_type => ords.source_type_plsql,
p_source => '
DECLARE
l_input clob := :body_text;
l_input_json json_array_t;
l_input_xml XMLTYPE;
BEGIN
OWA_UTIL.mime_header (''text/plain'');
IF OWA_UTIL.get_cgi_env (''content-type'') = ''application/json''
THEN
l_input_json := json_array_t.parse (l_input);
htp.p (l_input_json.stringify);
ELSIF OWA_UTIL.get_cgi_env (''content-type'') = ''application/xml''
THEN
null;
l_input_xml := xmltype (l_input);
htp.p (l_input_xml.getstringval);
ELSE
HTP.p (''Unsupported content type'');
:status_code := 500;
END IF;
END;');
COMMIT;
END;
以下是 Postman 的一些屏幕截图,展示了如何发送不同的内容类型
【讨论】: