Вы Ruby-разработчик и хотите повысить свои навыки работы с GraphQL? Не смотрите дальше! В этой статье блога мы окунемся в удивительный мир GraphQL в Ruby и рассмотрим ряд методов, которые помогут вам стать профессионалом в GraphQL. Итак, возьмите свой любимый редактор кода и приступим!
GraphQL::Schema.define
Этот метод используется для определения схемы GraphQL для вашего приложения. Требуется блок, в котором вы можете определять типы объектов, запросы, мутации и подписки.
class MySchema < GraphQL::Schema
query QueryType
mutation MutationType
end
field
Методfieldиспользуется для определения полей в типах GraphQL. Он принимает такие аргументы, как имя, тип, описание и функция разрешения.
Types::UserType = GraphQL::ObjectType.define do
name 'User'
field :id, !types.ID
field :name, !types.String
field :email, !types.String
end
argument
Этот метод используется для определения аргументов для полей в типах GraphQL.
Types::QueryType = GraphQL::ObjectType.define do
name 'Query'
field :user, Types::UserType do
argument :id, !types.ID
resolve ->(obj, args, ctx) { User.find(args[:id]) }
end
end
resolve
Методresolveиспользуется для определения логики разрешения поля. Он принимает такие аргументы, как obj (родительский объект), args (аргументы, передаваемые в поле) и ctx (контекст).
Types::QueryType = GraphQL::ObjectType.define do
name 'Query'
field :user, Types::UserType do
argument :id, !types.ID
resolve ->(obj, args, ctx) { User.find(args[:id]) }
end
end
mutation
Этот метод используется для определения мутаций в GraphQL. Он принимает такие аргументы, как имя, поля ввода, поля возврата и функцию разрешения.
Types::MutationType = GraphQL::ObjectType.define do
name 'Mutation'
field :createUser, Types::UserType do
argument :name, !types.String
argument :email, !types.String
resolve ->(obj, args, ctx) { User.create(args.to_h) }
end
end
subscription
Методsubscriptionиспользуется для определения подписок в GraphQL. Он принимает такие аргументы, как имя, поля ввода, поля возврата и функцию разрешения.
Types::SubscriptionType = GraphQL::ObjectType.define do
name 'Subscription'
field :newUser, Types::UserType do
argument :id, !types.ID
resolve ->(obj, args, ctx) { User.find(args[:id]) }
end
end
GraphQL::Execution::execute
Этот метод используется для выполнения запроса или мутации GraphQL. Он принимает такие аргументы, как схема, строка запроса или мутации, контекст и переменные.
result = GraphQL::Execution::execute(
MySchema,
query_string,
variables: { id: 1 },
context: { current_user: current_user }
)
graphiql
Методgraphiqlиспользуется для включения интегрированной среды разработки GraphiQL в вашем приложении для упрощения тестирования и исследования запросов GraphQL.
Rails.application.routes.draw do
mount GraphiQL::Rails::Engine, at: '/graphiql', graphql_path: '/graphql'
end
Это лишь некоторые из многих методов, доступных в драгоценном камне graphql-ruby. Используя эти методы, вы можете легко создавать мощные API-интерфейсы GraphQL на Ruby.
Итак, чего же вы ждете? Начните исследовать мир GraphQL в Ruby уже сегодня!