Моя мысль к вопросам:
Я не рекомендую этот стиль API. Он предоставит общественности доступ к вашей реализации бэкэнда, что затруднит работу с любыми условиями безопасности, не говоря уже о бизнес-логике и авторизации. Кроме того, было бы трудно улучшить вашу производительность, потому что поведение тесно связано с пакетом sequelize.
Вы можете рассмотреть этот пост: GraphQL Mutation Design: Анемичные мутации . Хороший API-интерфейс GraphQL должен определяться доменом и требованием, а не данными.
НЕТ! Я испытал трудности с этим стилем API.
На самом деле, это не очень хорошая идея. Если вы организуете проект с полным стеком, состоящий из одного человека, он может показаться быстрым в первую очередь, но стоимость разработки взлетит до тех пор, пока вы не сможете двигаться дальше. Если вы работаете как группа, вы можете заметить, что сторона клиента тесно связана со стороной сервера, что очень плохо для разработки.
На стороне клиента ему нужен только конечный набор apis вместо apis с бесконечными возможностями.
На стороне сервера вы ничего не можете сделать, кроме как передать данные для секвелирования, что затрудняет повышение вашей производительности, добавление логического слоя и внедрение другой системы баз данных, например эластичного поиска, в вашу кодовую базу.
Когда речь идет о разработке API, вы можете рассмотреть Domain Driven Design , который известен как DDD. Лучше использовать GET Friends?limit=10
API, чем GET { type: 'User", where: ..., include: ..., order: ..., limit: 10 }
Кстати, GraphQL - это не просто язык запросов, это по сути тонкий слой API ( ref ). Поэтому не используйте его в качестве базы данных JSON, а относитесь к нему как к API, ориентированному на потребности бизнеса.
Например, вот модель пользователя:
{
"User": {
"id": 1,
"name": "Mary",
"age": 20,
"friendIds": [2, 3, 4]
}
}
Но в GraphQL, исходя из того, что вам нужно, оно может стать:
type User {
id: ID
name: String
friends: [User]
friendCount: Int
friendsOverAge18: [User]
}
Вы можете прочитать эту замечательную статью о том, как разработать API GraphQL: Shopify / graphql-design-tutorial