Имеет ли смысл использовать входной объект в качестве параметра для запроса GraphQL (не мутации)

#graphql #apollo #apollo-server #graphql-java

#graphql #apollo #apollo-сервер #graphql-java

Вопрос:

Я разрабатываю службу GraphQL и рассмотрел входные объекты и рекомендации относительно их использования для мутаций. Имеет ли смысл также использовать входные объекты в качестве параметров для запроса, если количество параметров велико (допустим, около 10 для обсуждения)? Почему? Почему бы и нет?

Кроме того, если имеет смысл использовать входные объекты для запросов, что следует учитывать, чтобы выяснить, является ли это правильным решением для меня?

пример запроса:

   retrieveData(
    ids: [ID!]
    codes: [String!]
    countries: [String!]
    types: [String!]
    business: [String!]
    locations: [ID!]
    region: Region!
    limit: Int = 50
    offset: Int = 0
    sortBy: SortBy
    version: Int
  ): Response!```
  

Комментарии:

1. нет, количество не является причиной, сходство является ключевым (например, разбивка на страницы — предел смещение)… retrieveData похоже, нет определенного типа… свойства выглядят как отношения, встроенные в type … where -можно использовать подобную фильтрацию

2. Я намеренно переименовал запрос, чтобы сделать его универсальным. @xadm Вы правы, что это параметры, используемые для фильтрации возвращаемых данных. Все параметры до местоположений используются для фильтрации и являются частью объекта ответа. Они могут быть объединены во входной объект, такой как dataFilter, и у нас может быть другой входной объект для разбивки на страницы. Каковы были бы недостатки такого подхода?

3. свойства / фильтры по-прежнему «выглядят как отношения, встроенные в тип», имя не имеет значения… никаких недостатков