2016-10-23 3 views
2

Вопрос о спецификации API JSON и о том, как правильно выполнить запрос (я использую ruby ​​on rails и json api resources gem, но это общий вопрос в любом случае, я знаю, как его реализовать, Я просто хочу, чтобы следовать правилам JSON API по адресу: http://jsonapi.org/format/)Фильтр JSON API включил ресурсы

Ситуация 1:

  • Я хочу, чтобы все полки
  • Я хочу, чтобы включить все книги, которые находятся на этих полках
  • ГЭТ я должен использовать в этом случае: 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?

Каков наилучший способ сделать это?

EDIT

После разговора с моим техническим свинцом и несколькими других программистами, первыми варианты благоприятствуют наиболее в таких случаях

+0

Poeditor принимает массив (который выглядит следующим образом: ["option1", "option2"]) в качестве параметра: https://poeditor.com/api_reference/#export. Таким образом, в вашем случае это может выглядеть как фильтр = ["непрочитанный", "доступный"]. – jereksel

+0

@jereksel извините, но я не вижу, как это относится к ситуации, когда вы хотите отфильтровать включенный ресурс.Я не хочу фильтровать по дополнительным условиям/параметрам в этом случае – beniutek

ответ

3

я бы поставил на первом:

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

Да, похоже, выглядит хорошо, я думаю, что больше мнения о том, что один простой ответ. Есть ли у вас ресурсы для ответа? Хотелось бы узнать больше об этой теме – beniutek

+0

Да, разговаривал с другими разработчиками об этом, и это было самым предпочтительным вариантом для отслеживания – beniutek

1

В настоящее время API JSON не поддерживает фильтрацию, но это не значит, что вы должны быть строгими в определении (отметьте https://github.com/cerebris/jsonapi-resources/issues/314)

Я бы с такой же подход, как Брайен: www.library.com/shelves?include=books&filter[books.unread]=true

Я просто хотел, чтобы дать немного больше фона для ответа.

+0

im, который в настоящее время разрабатывает фильтрацию на включенных ресурсах из-за этого см. Https://github.com/ beniutek/jsonapi-resources В настоящее время это более или менее работает, хотя я борюсь с глубоко вложенными ресурсами и кешированием. Когда это будет сделано, и пиар будет принят за официальную жемчужину, пусть вас знают в этой теме – beniutek

+0

Это хорошо знать. С нетерпением жду этого! –

 Смежные вопросы

  • Нет связанных вопросов^_^