GraphQL Java: Guia Completo da Biblioteca para Criação de APIs em Java

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

GraphQL Java: Ferramenta Poderosa para Criar APIs Modernas



GraphQL Java é uma biblioteca do lado do servidor para a linguagem Java que permite aos desenvolvedores criar APIs flexíveis, eficientes e com segurança de tipos com base na especificação GraphQL. Ao contrário das APIs REST tradicionais, o GraphQL permite que o cliente solicite apenas os dados de que precisa, reduzindo significativamente o volume de informações transmitidas e acelerando o funcionamento das aplicações. Esta biblioteca é a implementação oficial do GraphQL para Java e é ativamente mantida pela comunidade.



Principais Recursos e Vantagens do GraphQL Java



  • Segurança de Tipos: A tipagem rigorosa de todos os dados no nível do esquema evita erros em tempo de execução e simplifica o desenvolvimento.
  • Flexibilidade de Consultas: Os clientes podem solicitar apenas os campos necessários, objetos aninhados e até mesmo executar várias operações em uma única consulta.
  • Ponto de Entrada Único: Ao contrário do REST com vários endpoints, o GraphQL usa um único endpoint para todas as consultas.
  • Documentação Automática: Com base no esquema, é gerada documentação interativa (por exemplo, usando GraphiQL ou Playground).
  • Suporte a Subscriptions: Possibilidade de receber atualizações em tempo real via WebSocket.
  • Integração com o Ecossistema Java: Integra-se facilmente com Spring Boot, Micronaut, Quarkus e outros frameworks.


Primeiros Passos com GraphQL Java



Para adicionar a biblioteca ao seu projeto Maven, adicione a seguinte dependência no arquivo pom.xml:



<dependency>    <groupId>com.graphql-java</groupId>    <artifactId>graphql-java</artifactId>    <version>21.3</version></dependency>


Para Gradle, adicione a linha no build.gradle:



implementation 'com.graphql-java:graphql-java:21.3'


Criação do Esquema GraphQL



O esquema é a base de qualquer API GraphQL. Ele define os tipos de dados, as consultas disponíveis (Query), as mutações (Mutation) e as subscrições (Subscription). Vejamos um exemplo de esquema para uma biblioteca de livros:



type Book {    id: ID!    title: String!    author: String!    year: Int}

type Query { bookById(id: ID!): Book allBooks: [Book]}

type Mutation { addBook(title: String!, author: String!, year: Int): Book}


Para carregar o esquema em Java, use a classe SchemaParser:



import graphql.schema.idl.SchemaParser;import graphql.schema.idl.TypeDefinitionRegistry;

// Carregar esquema de um arquivoFile schemaFile = new File("src/main/resources/schema.graphqls");TypeDefinitionRegistry typeRegistry = new SchemaParser().parse(schemaFile);


Implementação de Resolvers (DataFetcher)



Resolvers (ou DataFetcher) são classes que fornecem dados para cada campo do esquema. Exemplo de um resolver simples para a consulta bookById:



import graphql.schema.DataFetcher;import graphql.schema.DataFetchingEnvironment;

public class BookDataFetcher implements DataFetcher<Book> { @Override public Book get(DataFetchingEnvironment environment) { String id = environment.getArgument("id"); // Lógica para obter o livro do banco de dados return bookRepository.findById(id); }}


Em seguida, vincule o resolver ao campo do esquema:



import graphql.schema.idl.RuntimeWiring;

RuntimeWiring wiring = RuntimeWiring.newRuntimeWiring() .type("Query", builder -> builder.dataFetcher("bookById", new BookDataFetcher())) .type("Mutation", builder -> builder.dataFetcher("addBook", new AddBookDataFetcher())) .build();


Execução de Consultas



Após configurar o esquema

Recommendations