【问题标题】:How to eliminate the extra parameters from ORDS如何从 ORDS 中去除多余的参数
【发布时间】:2023-01-05 13:03:20
【问题描述】:

我正在使用 sql developer 和 ORDS 来启用前端来获取数据。在通过 REST 服务返回的数据中,我得到类似 "hasMore":false,"limit":25,"offset":0,"count":4,"links": 的参数

连同实际数据。

我怎样才能只获取实际数据?

例子:

{
   "items":[
      {
         "empid":1,
         "ename":"hello"
      },
      {
         "empid":3,
         "ename":"hello"
      },
      {
         "empid":2,
         "ename":"hello"
      },
      {
         "empid":4,
         "ename":"hello"
      }
   ],
   "hasMore":false,
   "limit":0,
   "offset":0,
   "count":4,
   "links":[
      {
         "rel":"self",
         "href":"http://localhost:8081/ords/vinayak/dem/employees/"
      },
      {
         "rel":"describedby",
         "href":"http://localhost:8081/ords/vinayak/metadata-catalog/dem/employees/"
      }
   ]
}

这是我得到的输出。但我想要它作为

    {
   "items":[
      {
         "empid":1,
         "ename":"hello"
      },
      {
         "empid":3,
         "ename":"hello"
      },
      {
         "empid":2,
         "ename":"hello"
      },
      {
         "empid":4,
         "ename":"hello"
      }
   ]
}

【问题讨论】:

    标签: oracle rest oracle-sqldeveloper oracle-ords


    【解决方案1】:

    通常你会默认为查询请求分页,因为我们不知道你有多少数据可能得到。您可以通过将模块的页面大小设置为 0 来关闭它。

    但是,当然,现在由您来确保您不会遇到正在构建和通过网络传递的无限大小的 JSON 文档的麻烦。

    【讨论】:

    • 我想你误解了我的问题。我已经更新了它。请检查。 @康纳麦克唐纳
    【解决方案2】:

    REST API 本质上是 LINK 驱动的,这是 Oracle REST 数据服务 (ORDS) 背后的核心概念之一。

    这个概念被称为 HATEOAS(超媒体作为引擎 应用程序状态)是 REST 应用程序的约束 建筑学。 HATEOAS 使 REST 风格的架构从 大多数其他网络应用程序架构。

    Basically, you want links to navigate with for your apps.

    如果你不想要它们,你可以做两件事。

    1.您可以创建自己的回复。这意味着不使用 ORDS 的内置功能,而是做一些事情,比如为您的处理程序使用 MEDIA 源类型,并编写 PL/SQL 或 SQL 代码来构建您希望在调用时返回的 JSON 文档。

    Example but with XML instead of JSON

    2.使用已弃用的源类型

    ORDS.DEFINE_HANDLER(
          p_module_name    => 'nolinks',
          p_pattern        => 'emps/',
          p_method         => 'GET',
          p_source_type    => 'json/query;type=feed',
          p_items_per_page =>  0,
          p_mimes_allowed  => '',
          p_comments       => NULL,
          p_source         => 
    'select * from locations'
          );
    

    调用此端点,我的响应如下所示 -

    已弃用意味着我们已经告诉您我们不打算永远支持它。该功能可能会在未来的版本中消失。

    并不是说教,但如果你有很多记录,你会想要分页,然后你会想要那些链接。你的 javascript 应用程序/框架/任何东西都应该足够灵活,以忽略你不关心使用的 json 属性和链接。

    免责声明:我是 Oracle 的产品经理,ORDS 是我的产品之一。

    【讨论】:

    • 感谢您的回答。我可以演练一下如何生成自定义响应吗?我在桌面模式下使用 sql developer。
    • 那是一个不同的问题。接受这里的答案,并提出一个新问题。如果您搜索的话,我的博客上确实有示例……此外,我还向您展示了 XML。您只需使用数据库功能来生成 JSON。
    猜你喜欢
    • 2021-04-02
    • 2013-02-06
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    相关资源
    最近更新 更多