将路径参数值获取到 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的主要内容,如果未能解决你的问题,请参考以下文章