ords url参数不起作用

时间:2017-03-03 16:39:53

标签: sql oracle rest api plsql

我正在设计ords api并遇到以下问题。

我想设计以下api:

/ords/schema_name/customers/?name=somename

如果在网址上设置,则可以返回列customer_name等于输入参数name的项目。

定义了ords服务:

BEGIN
   ORDS.DEFINE_SERVICE(
      p_module_name => 'customers' ,
      p_base_path   => '/customers/',
      p_pattern     => ':id?',
      p_source      => 'select * from customers where customer_id = nvl(:id,customer_id) and UPPER(customer_name) = nvl(UPPER(:name),UPPER(customer_name))'
   );

   COMMIT;
END;

然而,我从请求/ords/schema_name/customers/?name=somename获得的共鸣与请求/ords/schema_name/customers/相同。它从数据库返回所有客户。

我也尝试向/ords/schema_name/customers?name=somename发送请求。也不运气。

我想知道为什么url上的参数不起作用以及如何修复它。

1 个答案:

答案 0 :(得分:0)

您可以通过多种方式查询ORDS。

  1. 列表 http://<server>:<port>/ords/scott/emp
  2. 获取Pk: http://<server>:<port>/ords/scott/emp/7788
  3. 排序:
    http://<server>:<port>/ords/scott/emp?q={"$orderby":{"ENAME":"ASC"}} http://<server>:<port>/ords/scott/emp?q={"$orderby":"SAL":"DESC","ENAME":"ASC"}}
  4. 过滤
    http://<server>:<port>/ords/scott/emp?q={"SAL":5000}
    http://<server>:<port>/ords/scott/emp?q={"SAL":{"$eq":5000}}
    
  5. 注意:如果您正在使用ORDS高级模式安装,即。使用单独的Tomcat服务器运行ORDS服务器,然后您必须知道tomcat版本。最新版本的tomcat [apache-tomcat-8.5.11,apache-tomcat-8.0.39]支持查询参数,但您必须传递编码格式,而不是普通格式。

    要进行编码,您只需使用 encodeURIComponent() javascript函数:

    encodeURIComponent('{"field_name": "<value>"}')
    

    同样,支持普通查询参数的apache-tomcat-8.0.30