Это плохая практика использовать типы ввода graphql для аргументов запроса, как это обычно делается в мутациях, например
createPost(CreatePostInput!): CreatePostPayload
Я вижу, что многие api используют отдельные запросы для получения объекта по разным полям, например
userByEmail(email: String!): User
userByName(name: String!): User
вместо
user(email: String, name: String): User
Это имеет смысл, но некоторые запросы в конечном итоге требуют более одного аргумент, например результаты с разбивкой на страницы. Например, может потребоваться изменить начальный / конечный курсор, результаты на странице, порядок и другие, плюс для основного запроса может потребоваться более одного аргумента для поиска сущностей, поэтому эти запросы заканчиваются 5-6 разными аргументами.
Вопрос в том, почему люди не используют для этого типы ввода?
Отвечая на ответ ниже, я не могу не задаться вопросом, почему люди считают это
query ($category: String, $perPage: Number, $page: Number, $sortBy: String) {
posts(category: $category, perPage: $perPage, page: $page, sortBy: $sortBy) {
...
}
}
дружелюбнее, чем это
query( $input: PostQueryInput ) {
posts(input: $input) {
...
}
}
Это потому, что типы ввода могут содержать только примитивы? Мне кажется, это действительно сбивает с толку, почему в одном случае это лучше, а в другом - хуже.
Я знаю, что люди не обязаны делать это, вы можете делать это как хотите, но я думаю, что в большинстве API-интерфейсов graphql это не делается так, и мне интересно, почему это может быть - у людей должна быть причина не делать этого.