将路径参数值获取到 ORDS prehook

Posted

技术标签:

【中文标题】将路径参数值获取到 ORDS prehook【英文标题】:Get path param value into ORDS prehook 【发布时间】:2022-01-13 11:30:10 【问题描述】:

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

进入端点上的处理程序 GET、POST、PUT 等,可以获取 pathparam 值,但不清楚如何在 ORDS prehook 中完成。

【问题讨论】:

【参考方案1】:

我有这个函数来获取完整的 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;

【讨论】:

我将你的函数 request_url 创建到 rest_pk_util 包中。在我使用 SQL select rest_pk_util.request_url() from dual; 创建了一个像“\x\test”这样的 ORDS 端点之后。这会引发“无法检索 request_url”异常。 如果我将 owa_util 直接用于 ORDS 端点,如select owa_util.get_cgi_env('QUERY_STRING') from dual,则会引发异常:无法处理请求,因为在尝试评估与此资源关联的 SQL 语句时发生错误。请检查 SQL 语句的格式是否正确,并且执行时没有错误。 SQL 错误代码:6502,错误消息:ORA-06502:PL/SQL:数字或值错误 ORA-06512:在“SYS.OWA_UTIL”,第 354 行 试着把它放在 pl/sql 中而不是 sql 中 对,它在pl/sql中工作。 在这个特定的问题上,我们无法真正获得路径参数的名称,我们只是已经有了带有值的 url。例如:/clientes/codigo 我没有 :codigo 参数名称及其值。我只能获取填充值的 url,/clientes/123456

以上是关于将路径参数值获取到 ORDS prehook的主要内容,如果未能解决你的问题,请参考以下文章

请求&注解

servlet如何获取url传递的参数

将逗号分隔的值作为搜索参数附加到 url [重复]

Java实现获取属性文件的参数值

如何将参数从脚本传递到 html 表单值

将选择选项值作为 url 参数传递到下一页