GraphQL API com Java: tutorial prático passo a passo

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

Introdução à GraphQL API em Java

\n\n

GraphQL é uma linguagem de consulta para APIs que permite aos clientes solicitar apenas os dados de que realmente precisam. Ao contrário do REST, onde a estrutura da resposta é fixa, o GraphQL permite formar respostas de forma flexível, reduzindo significativamente o volume de dados transmitidos e acelerando o desenvolvimento.

\n\n

Neste tutorial, vamos explorar na prática como criar uma GraphQL API com Java usando a biblioteca graphql-java e o framework Spring Boot. Você aprenderá a configurar o esquema, escrever resolvers e executar consultas.

\n\n

O artigo será útil para desenvolvedores Java que desejam dominar uma abordagem moderna para construir APIs e melhorar a interação entre cliente e servidor.

\n\n

1. Configuração do projeto e dependências

\n\n

Para começar, vamos criar um novo projeto Spring Boot. A maneira mais conveniente é usar o Spring Initializr. Adicione as seguintes dependências:

\n\n
    \n
  • Spring Web — para executar o servidor web
  • \n
  • Spring Boot DevTools — para acelerar o desenvolvimento
  • \n
  • Lombok — para reduzir o código boilerplate
  • \n
\n\n

Após criar o projeto, adicione a biblioteca principal do GraphQL no pom.xml:

\n\n
<dependency>\n    <groupId>com.graphql-java</groupId>\n    <artifactId>graphql-java-spring-boot-starter-webmvc</artifactId>\n    <version>2021-06-30T00-00-00-1e4b5e5</version>\n</dependency>
\n\n

Você também precisará da biblioteca para trabalhar com a ferramenta GraphiQL (interface web para testar consultas):

\n\n
<dependency>\n    <groupId>com.graphql-java</groupId>\n    <artifactId>graphiql-spring-boot-starter</artifactId>\n    <version>5.0.2</version>\n</dependency>
\n\n

Após adicionar as dependências, atualize o projeto e execute-o. Por padrão, o GraphiQL estará disponível no endereço http://localhost:8080/graphiql.

\n\n

2. Criação do modelo de dados e esquema GraphQL

\n\n

Para demonstração, vamos criar um modelo simples de Book (livro). Defina a classe com os campos id, title, author e pages.

\n\n
import lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class Book {\n    private String id;\n    private String title;\n    private String author;\n    private int pages;\n}
\n\n

Agora é necessário definir o esquema GraphQL. Crie o arquivo schema.graphqls na pasta src/main/resources:

\n\n
type Query {\n    allBooks: [Book]\n    bookById(id: String): Book\n}\n\ntype Book {\n    id: String\n    title: String\n    author: String\n    pages: Int\n}
\n\n

O esquema descreve duas consultas: obter todos os livros e obter um livro pelo identificador. O tipo Book contém quatro campos.

\n\n

Para processar as consultas, vamos criar um serviço que armazenará os dados em memória (para simplificar):

\n\n
import org.springframework.stereotype.Service;\nimport javax.annotation.PostConstruct;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Optional;\n\n@Service\npublic class BookService {\n    private List<Book> books = new ArrayList<>();\n\n    @PostConstruct\n    public void init() {\n        books.add(new Book("1", "Guerra e Paz", "Lev Tolstói", 1225));\n        books.add(new Book("2", "Crime e Castigo", "Fiódor Dostoiévski", 671));\n        books.add(new Book("3", "O Mestre e a Margarida", "Mikhail Bulgákov", 480));\n    }\n\n    public List<Book> getAllBooks() {\n        return books;\n    }\n\n    public Book getBookById(String id) {\n        Optional<Boo                

Blogs

Book Recommendations