Json массив в почтовом методе Apex RestFul - PullRequest
0 голосов
/ 07 августа 2020

Я успешно создаю почтовый сервис, который принимает данные в теле запроса структуры xml, но теперь есть необходимость получить из тела запроса массив типа json и обработать его, но я не могу найти пример или документация для этого решения.

1 Ответ

0 голосов
/ 02 сентября 2020

Используя 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 содержимого

Пример отправки неизвестного типа содержимого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...