将路径参数值获取到 ORDS prehook

Get path param value into ORDS prehook

有没有办法用 get_cgi_env 从 url 获取路径参数?示例:https://clientes/{codigo}。我想从 :codigo 路径参数中获取值。

进入端点上的处理程序 GET、POST、PUT 等,可以获得路径参数值,但不清楚如何进入 ORDS prehook。

我有这个函数来获得完整的 url - “QUERY_STRING”部分应该给你参数

  FUNCTION request_url RETURN VARCHAR2
  IS
    l_url VARCHAR2(1024);
  BEGIN
    l_url := owa_util.get_cgi_env('SERVER_NAME') ||':' ||
           owa_util.get_cgi_env('SERVER_PORT') ||
           owa_util.get_cgi_env('SCRIPT_NAME') ||
           owa_util.get_cgi_env('PATH_INFO') ||
           owa_util.get_cgi_env('QUERY_STRING');
    RETURN l_url;
  EXCEPTION WHEN VALUE_ERROR THEN
    RETURN 'unable to retrieve request_url';
  END request_url;

您可以通过 owa.cgi_var_name 和 owa.cgi_var_val 访问所有可用的 CGI 变量(owa.num_cgi_vars 用于计数)。

我的 preHook 中有这个 运行ning:

pragma autonomous_transaction;
l_obj  json_object_t := json_object_t();
l_json blob;
  begin
    for i in 1 .. owa.num_cgi_vars loop
      l_obj.put(owa.cgi_var_name(i), owa.cgi_var_val(i));
    end loop;
    l_json := l_obj.to_blob;
    insert into rest_access
      (id, created, cgi_variables, current_schema)
    values
      (s_rest_access.nextval, sysdate, l_json, sys_context('userenv', 'current_schema'));
    commit;

您可以访问很多值,包括参数。

要在 运行 设置它并记录请求后查看参数列表,只需 运行

select *
  from json_table((select json_dataguide(cgi_variables, dbms_json.format_flat) from rest_access),
                  '$[*]' columns( --
                          opath varchar2(200) path '$."o:path"',
                          otype varchar2(40) path '$.type',
                          olength number path '$."o:length"')) j;