API GraphQL do Atlas [Obsoleto]
Nesta página
O GraphQL está obsoleto. Saiba mais.
Visão geral
O Atlas GraphQL A API permite que aplicativos de cliente acessem dados armazenados em um cluster MongoDB Atlas vinculado usando qualquer cliente padrão do GraphQL.
O Atlas App Services cria automaticamente tipos de GraphQL para cada coleção vinculada que tenha um esquema definido e avalia as permissões baseadas em função para todas as solicitações do GraphQL. Para saber como tornar os dados disponíveis por meio da API do GraphQL, consulte Expor dados em uma coleção.
Para saber mais sobre os tipos e operações gerados que você pode usar com a API do Atlas GraphQL, consulte GraphQL Types & Resolvers.
Para ampliar a funcionalidade da GraphQL API gerada com queries e mutações personalizadas, consulte Definir um resolvedor personalizado.
Observação
Criar um Atlas Cluster grátis
A GraphQL API permite a você acessar os dados que você armazenou em um cluster do MongoDB Atlas ou instância do banco de dados federado. Para começar, crie um cluster do gratuito e vincule-o ao seu aplicativo.
Se você ainda não possui dados, mas mesmo assim quer explorar a API do GraphQL, considere adicionar um conjunto de dados de amostra ao seu cluster.
Por que GraphQL?
GraphQL é uma linguagem de consulta declarativa e fortemente tipada para aplicativos clientes. Os clientes definem a forma exata dos dados e o conteúdo de que precisam em uma única solicitação, o que elimina problemas de busca excessiva e contorna a necessidade de várias viagens de ida e volta dispendiosas ao servidor.
Para saber mais sobre o GraphQL, consulte o tutorial oficial do GraphQL.
Como o App Services cria esquemas GraphQL
Usando o App Services, você gera o esquema e resolvedores do GraphQL a partir de esquemas JSON para collections do MongoDB. Isso difere das abordagens tradicionais que prioriza o código e o esquema. ao desenvolvimento do esquema GraphQL.
Para definir seu esquema GraphQL com o App Services:
Defina um JSON schema para uma coleção do MongoDB em seu cluster do MongoDB Atlas. Você pode impor a forma do esquema da coleção com base em definições personalizadas ou usar um esquema gerado com base nos documentos da coleção.
Gere o esquema GraphQL e os resolvedores com base no JSON schema da sua coleção.
Como opção, estenda a funcionalidade do seu esquema GraphQL gerado com resolvedores personalizados.
Operações GraphQL
O App Services gera automaticamente tipos e resolvedores para os dados que você expõe à API do GraphQL. Os tipos e operações gerados recebem todos o mesmo nome do tipo base para cada coleção exposta. Se você não definir um nome de tipo, o App Services utilizará o nome da coleção.
Para obter mais informações sobre como expor uma coleção e nomear seu tipo de dados, consulte Expor dados em uma collection.
Observação
A mutação do GraphQL e as solicitações de resolvedores personalizados usam transações do MongoDB para garantir a correção em várias operações do banco de dados. Se alguma operação em uma solicitação falhar, toda a transação falhará e nenhuma operação será confirmada no banco de dados.
Consultas
Uma query do GraphQL é uma operação de leitura que solicita campos específicos de um ou mais tipos. O App Services gera automaticamente tipos de query para documentos em cada collection que tenha um esquema definido.
Para obter mais informações e exemplos, incluindo uma lista de todos os tipos de query gerados automaticamente, consulte Resolvedores de query.
# Find a single movie by name query { movie(query: { title: "The Matrix" }) { _id title year runtime } } # Find all movies from the year 2000 query { movies(query: { year: 2000 }) { _id title year runtime } } # Find the ten longest movies from the year 2000 query { movies( query: { year: 2000 } sortBy: RUNTIME_DESC limit: 10 ) { _id title year runtime } }
Mutações
Uma mutação do GraphQL é uma operação de gravação que cria, modifica ou exclui um ou mais documentos. O App Services gera automaticamente tipos de mutação para documentos em cada coleção que tenha um esquema definido. O App Services usa transações para garantir gravações seguras por meio de mutações.
Para obter mais informações e exemplos, incluindo uma lista de todos os tipos de mutação gerados automaticamente, consulte Resolvedores de mutação.
# Insert a new movie mutation { insertOneMovie(data: { title: "Little Women" director: "Greta Gerwig" year: 2019 runtime: 135 }) { _id title } } # Update the year of a movie mutation { updateOneMovie( query: { title: "The Matrix" } set: { year: 1999 } ) { _id title } } # Delete a movie mutation { deleteOneMovie(query: { title: "The Room" }) { _id title } } # Delete multiple movies mutation { deleteManyMovies(query: { director: "Tommy Wiseau" }) { _id title } }
Limitações
A GraphQL API pode processar um máximo de dez resolvedores para uma determinada query ou mutação. Se uma operação especificar mais de dez resolvedores, toda a operação falhará com a mensagem de erro
"max number of queries reached"
.A API GraphQL pode resolver relações com uma profundidade máxima de cinco para uma determinada consulta ou mutação. Se uma operação especificar um relacionamento mais profundo do que cinco resolvedores, toda a operação falhará com a mensagem de erro
"max relationship depth exceeded"
.A GraphQL API espera que os esquemas de collection tenham títulos exclusivos e emite um aviso se o seu modelo de dados contiver títulos duplicados.
Você pode ignorar esse aviso com segurança se:
Os conflitos de título envolvem apenas objetos embarcados.
Cada esquema com determinado título utilizar uma definição idêntica, incluindo relacionamentos.
No momento, a API do GraphQL não oferece suporte a relacionamentos para campos dentro de matrizes de objetos incorporados. Você pode usar um resolvedor personalizado para procurar e resolver manualmente relacionamentos de matriz de objetos incorporados.