Использование типов ввода для аргументов запроса - PullRequest
0 голосов
/ 20 июня 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...