【问题标题】:JSON API filter included resourcesJSON API 过滤器包含的资源
【发布时间】:2017-03-05 10:19:23
【问题描述】:

问题是关于 JSON API 规范以及如何正确执行请求 (我正在使用 ruby​​ on rails 和 json api resources gem 但无论如何这是一个普遍的问题,我知道如何实现它,我只想遵循 JSON API 的规则:http://jsonapi.org/format/

情况1:

  • 我想买所有的架子
  • 我想收录这些书架上的所有书籍
  • 在这种情况下我应该使用的 get 是: www.library.com/shelves?include=books

情况2:

  • 我想获取所有书籍,但只获取标记为未读的书籍

  • 我应该使用的 get 是: www.library.com/books?filter[unread]=true

为所有包含未读书籍的书架设计请求的正确方法是什么?

想不通这个

www.library.com/shelves?include=books&filter[books.unread]=true?

www.library.com/shelves?include=unread_books ?

www.library.com/shelves?filter[books.unread]=true?

这样做最正确的方法是什么?

编辑

在与我的技术主管和其他几位程序员交谈后,在这种情况下,第一个选项最受青睐

【问题讨论】:

  • Poeditor 接受数组(如下所示:["option1", "option2"])作为其参数:poeditor.com/api_reference/#export。因此,在您的情况下,它可能看起来像 filter=["unread", "available"]。
  • @jereksel 抱歉,但是当您要过滤包含的资源时,我看不出这如何适用于情况。在这种情况下,我不想按其他条件/参数进行过滤

标签: json json-api jsonapi-resources


【解决方案1】:

我会赌第一个:

www.library.com/shelves?include=books&filter[books.unread]=true

【讨论】:

  • 是的,看起来还不错,我想这是一个直截了当的答案。你有任何资源来支持你的答案吗?希望阅读更多关于该主题的信息
  • 是的,正在与其他开发人员讨论这个问题,这是最受欢迎的选择
【解决方案2】:

JSON API 目前不支持过滤包含,但这并不意味着你必须严格定义(检查https://github.com/cerebris/jsonapi-resources/issues/314

我会采用与布赖恩相同的方法: www.library.com/shelves?include=books&filter[books.unread]=true

我只是想为答案提供更多背景信息。

【讨论】:

  • 我目前正在开发对包含资源的过滤,因为看到github.com/beniutek/jsonapi-resources 目前它或多或少地工作,尽管我正在努力处理深度嵌套的资源和缓存。完成后,官方 gem 将接受 PR 将在此主题中通知你们
  • 这是一个旧线程,但如果有人感兴趣,包含资源的过滤将合并到 jsonapi-resources gem github.com/cerebris/jsonapi-resources/pull/1183(虽然不是我的工作:))
猜你喜欢
  • 1970-01-01
  • 2018-02-27
  • 1970-01-01
  • 1970-01-01
  • 2011-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多