Gerador de schema GraphQL mock
Gere um schema GraphQL básico (type, Query e Mutation) a partir do nome de um recurso. Acelere o protótipo da sua API e copie o SDL pronto para o projeto.
—
Mock schemas em GraphQL: SDL, tipos e desenvolvimento front-end paralelo
GraphQL é uma linguagem de consulta e um runtime para APIs, criada por Lee Byron e colegas dentro do Facebook em 2012 para resolver os problemas de over-fetching e under-fetching do REST. Foi liberada como open source em 2015 e hoje é mantida pela GraphQL Foundation, parte da Linux Foundation. Em vez de várias requisições para endpoints diferentes, uma única consulta GraphQL descreve exatamente os campos que o cliente precisa, e o servidor devolve um JSON com o mesmo formato da consulta. Um schema mock é um schema com resolvers de mentirinha que devolvem dados falsos mas bem tipados, permitindo que o front-end avance sem esperar a implementação do back-end ficar pronta.
Este gerador monta um esqueleto SDL mínimo para um recurso; a referência abaixo cobre os fluxos schema-first vs code-first, o sistema de tipos, as principais ferramentas de mock e os padrões de produção que separam uma API GraphQL séria de um exemplo de tutorial.
Schema-first vs code-first
Duas filosofias dominam o ecossistema. Schema-first declara o contrato da API primeiro em SDL (Schema Definition Language) e depois conecta resolvers que atendem o contrato — usado pelo Apollo Server, GraphQL Yoga e a maior parte do stack JavaScript. Code-first gera o SDL a partir de classes ou funções tipadas — usado por TypeGraphQL, Pothos, NestJS GraphQL e Hot Chocolate (.NET). Schema-first mantém designers e back-end alinhados em torno de um documento único; code-first elimina o desalinhamento entre tipos e resolvers, mas o schema só aparece depois do build.
type Query {
user(id: ID!): User
users(limit: Int = 10): [User!]!
}
type User {
id: ID!
name: String!
email: String!
posts: [Post!]!
}
type Post {
id: ID!
title: String!
author: User!
}
Sistema de tipos
- Escalares:
Int,Float,String,Boolean,ID. Escalares customizados (DateTime,JSON,UUID) são comuns viagraphql-scalars. - Object types: entidades do domínio com campos nomeados, o feijão com arroz de qualquer schema.
- Enums: conjuntos fechados como
enum Role { ADMIN USER GUEST }. - Input types: pacotes de argumentos para mutations (
input CreateUserInput { ... }). - Interfaces e unions: polimorfismo —
interface Node { id: ID! }ouunion SearchResult = User | Post. - Listas e non-null:
[Post!]!é uma lista não-nula de posts não-nulos. A riqueza de nullability é uma das maiores vantagens do GraphQL sobre REST.
Estratégias e ferramentas de mock
Existem três estratégias comuns, conforme o realismo necessário:
- Aleatório a cada chamada: cada query retorna dados novos. Setup mais simples — use Apollo Server com
mocks: true, GraphQL Faker ou@graphql-tools/mockaddMocksToSchema. - Determinístico por ID: faça o seed do PRNG pelo ID consultado para que o mesmo lookup devolva o mesmo payload entre reloads — ideal para Storybook e regressão visual.
- Estado persistido: guarde os mocks em IndexedDB / LocalForage para que create/update/delete se comportem como um backend real. MSW (Mock Service Worker) intercepta requisições no nível de rede e é o padrão moderno para test suites de front-end.
Para fixtures de Storybook, mocks determinísticos são essenciais — um avatar aleatório quebra teste de pixel-diff. Para ambientes de demo, mocks persistidos deixam product managers clicarem em fluxos ponta a ponta sem banco de verdade.
REST vs GraphQL e padrões de produção
GraphQL resolve over-fetching (REST devolve mais campos do que o necessário) e under-fetching (REST força várias requisições). O custo é uma nova classe de problemas: o N+1 (um resolver pai carrega N filhos um por um) é mitigado pelo DataLoader, um cache com batching do Facebook. Autorização sai do nível de URL (middleware REST) para o nível de campo (guards no resolver). Paginação deve usar a spec cursor do Relay (edges, pageInfo, cursor) em vez de offset/limit. Erros são cada vez mais modelados como union types (Result pattern) para o cliente lidar com eles com a mesma type-safety dos casos de sucesso. Em microsserviços, Apollo Federation e GraphQL Mesh compõem subgraphs em um único supergraph.
FAQ
GraphQL substitui REST? Não — ele complementa. Muitas empresas mantêm APIs REST públicas e adicionam um gateway GraphQL para clientes internos e parceiros. Os dois podem coexistir atrás do mesmo load balancer.
Mock ajuda mesmo no trabalho paralelo? Sim. Uma vez que o SDL está acordado, time de front e back desenvolvem contra o mesmo contrato de forma independente. Contract tests (ex.: graphql-codegen contra o SDL) pegam desalinhamento antes da integração.
Qual ferramenta de mock escolher? Para testes unitários dentro de um app JS, MSW. Para um backend fake durante dev local, Apollo Server com mocks: true. Para explorar um schema público, GraphQL Faker. Para Storybook, mocks customizados por story.
Onde aprender a spec oficial? graphql.org/learn para o tutorial e spec.graphql.org para a gramática formal. The Guild mantém um ecossistema enorme (Codegen, Mesh, Yoga, Inspector).
Ferramentas Relacionadas
Gerador de tabela de dados mock SQL
Gere comandos SQL (CREATE TABLE + INSERTs) com dados fictícios a partir do nome de uma tabela. Popule bancos de dados de teste e protótipos em segundos.
Schema MusicAlbum JSON-LD
Gera JSON-LD Schema.org MusicAlbum com nome, artista (byArtist), data de lançamento, gênero, gravadora e tracklist (itemListElement de MusicRecording com duração ISO 8601 PT3M42S).
Gerador de Prisma model a partir de tabela
Gera um bloco model Prisma (schema.prisma) com id, name, email e timestamps — a partir do nome da tabela.