2016-10-23 102 views
2

的问题是关于JSON API规范,以及如何正确地做一个请求 (我使用Ruby on Rails和JSON API使用资源的宝石,但是,这是一个普遍的问题,无论如何,我知道如何实现它,我只是想跟随JSON API的规则:http://jsonapi.org/format/JSON API过滤器包括资源

情况1:

  • 我想所有的货架
  • 我想包括那些在那些货架
  • 所有书籍
  • 我应该在这种情况下使用GET是: www.library.com/shelves?include=books

情况2:

  • 我想所有的书籍,但唯书标记为未读

  • 得到我应该使用的是: 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

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

编辑

与我的技术主管和其他一些程序员沟通后,第一个选项是有利的最在这种情况下

+0

Poeditor接受阵列(其看起来像这样:[ “选项1”, “选项2”])作为其参数:https://poeditor.com/api_reference/#export。所以在你的情况下,它可能看起来像filter = [“未读”,“可用”]。 – jereksel

+0

@jereksel抱歉,但我不明白这是如何适用于情况,当你想过滤包括的资源。我不想在这种情况下通过附加条件/参数进行过滤 – beniutek

回答

3

我敢打赌放在了第一位:

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

是的,有点看起来不错,我猜这是更直接的答案。你有任何资源来支持你的答案吗?想更详细地阅读该主题 – beniutek

+0

是的,正在与其他开发者谈论这件事,这是最受青睐的选项 – beniutek

1

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

我会去的相同的方法,布莱恩: www.library.com/shelves?include=books&filter[books.unread]=true

我只是想给一些背景的解答。

+0

即时通讯目前正在开发过滤所包含的资源,因为那 请参阅https://github.com/ beniutek/jsonapi-resources 目前虽然我在深度嵌套资源和缓存方面挣扎,但它或多或少都能工作。当这样做和公关将被接受的官方宝石生病让你们知道在这个主题 – beniutek

+0

这很好知道。期待它! –