Используя REST API, определенный как в примере ниже, вы можете обрабатывать как JSON, так и XML, используя одну и ту же конечную точку. Используя заголовок Content-Type , пользователь / приложение, отправляющее информацию в API, может указать, отправляют ли они JSON или XML.
Я протестировал приведенный ниже код с помощью ORDS 19.2 и Oracle 19 c.
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, показывающие, как отправлять различные типы контента
Пример отправки XML контент
Пример отправки JSON содержимого
Пример отправки неизвестного типа содержимого