【问题标题】:Json array in post method Apex RestFul发布方法 Apex RestFul 中的 Json 数组
【发布时间】:2020-09-02 21:21:49
【问题描述】:

我成功创建了一个post服务,接受xml结构的请求体中的数据,但是现在需要从请求体中获取一个json类型的数组并进行处理,但是我找不到示例或文档对于这个解决方案。

【问题讨论】:

    标签: post plsql oracle-apex


    【解决方案1】:

    使用如下例定义的 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 的一些屏幕截图,展示了如何发送不同的内容类型

    Example sending XML content

    Example sending JSON content

    Example sending unknown content type

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2020-07-29
      • 1970-01-01
      • 1970-01-01
      • 2017-05-17
      • 2013-03-27
      相关资源
      最近更新 更多