Ценный? Поддержка полей в REST API

Я читал несколько тем о GraphQL, и одна из замечательных функций, которые мне нравятся, — это то, что вы можете указать нужные поля (клиентская сторона). Я думаю, может быть, я также могу добавить его в REST API. Я смотрю вокруг и обнаруживаю, что уже есть такая спецификация: fetching-sparse-fieldsets

Поэтому я пытаюсь добавить такую ​​функцию в Symfony. (Особенно в FOSRestBundle+JSMSerializer). Но я не совсем уверен, ценен он или нет. Может кто-нибудь дать вам совет?


person Yarco    schedule 08.09.2017    source источник
comment
Почему кто-то минусует мой вопрос и говорит, что это непонятно? ...Ты действительно разбираешься в технологиях?   -  person Yarco    schedule 12.09.2017


Ответы (1)


Это вопрос, который вы должны задать своим пользователям API и вашему клиенту. Это может быть полезно для пользователя API, но имеет много недостатков:

  • Создавая его самостоятельно, вы тратите много времени на разработку, тестирование и поддержку этой «необязательной» функции. Готов ли клиент платить? (YAGNI)
  • Как упоминалось выше, вы должны поддерживать код этой функции, вы не можете удалить его, если не решите выпустить новую версию API. По мере изменения внешних пакетов ваш код также может потребовать обновления.
  • Это может стать трудным при устранении неполадок. Пользователи API могут пытаться получить поле, не указанное в URL-адресе API (конечно, эти проблемы возникают после передачи проекта другим разработчикам). Могут возникнуть вопросы, почему некоторые данные недоступны, но есть в документации по API.

Особенно первый в списке невероятно важен. Не создавайте функции, которые не нужны клиенту. Лично я всегда возвращаю все доступные данные, даже нулевые значения. Пользователи API решают, что делать с этими данными. Пропускная способность не такая уж проблема в наши дни, я думаю.

person Marnix Bent    schedule 11.09.2017
comment
Привет, если я создам его, я думаю, это обычно используемый пакет, а не для какого-то проекта. - person Yarco; 12.09.2017
comment
Хорошо, тогда это более привлекательно, но это все еще о том, как пользователи вашего API используют ваши конечные точки. Многие разработчики создают объекты, которые представляют данные из API, чтобы предотвратить работу с массивами или данными JSON. Вероятно, они не используют выбор набора полей на уровне доступа к данным. - person Marnix Bent; 12.09.2017