Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Saiba por que o MongoDB foi selecionado como um líder no 2024 Gartner_Magic Quadrupnt()
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Idiomaschevron-right
Javachevron-right

Crie uma Java REST API com Quarkus e Eclipse JNoSQL para MongoDB

Otavio Santana6 min read • Published Jan 30, 2024 • Updated Jan 30, 2024
QuarkusMongoDBJava
APLICATIVO COMPLETO
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty

Introdução

Neste tutorial, você aprenderá como criar uma API RESTful usando o Quarkus, uma estrutura para construir aplicativos Java, e integrá-la ao Eclipse JNoSQL para trabalhar com o MongoDB. Criaremos uma API simples para gerenciar os registros do desenvolvedor.
A combinação do Quarkus com o Eclipse JNoSQL permite que você trabalhe com bancos de dados NoSQL usando uma API unificada, facilitando a alternância entre diferentes sistemas de banco de dados NoSQL.

Pré-requisitos

Para este tutorial, você precisará de:
  • Java 17.
  • Maven.
  • Um cluster do MongoDB.
    • Docker (Opção 1)
    • MongoDB Atlas (Opção 2)
Você pode usar o seguinte comando do Docker para iniciar uma instância MongoDB standalone:
1docker run --rm -d --name mongodb-instance -p 27017:27017 mongo
Ou você pode usar oMongoDB Atlas e experimentar a camada M0 grátis para implantar seu cluster.

Criar um projeto Quarkus

  • Configure seu projeto selecionando as opções desejadas, como o ID do grupo e do artefato.
  • Adicione as dependências necessárias ao seu projeto. Para este tutorial, adicionaremos:
    • JNoSQL Document MongoDB [quarkus-jnosql-document-mongodb]
    • RESTEasy Reactive [quakus-restasy-reactive]
    • RESTEasy Reactive Jackson [quarkus-resteasy-reactive-jackson]
    • OpenAPI [quarkus-smallrye-openapi]
  • Gere o projeto, baixe o arquivo ZIP e extraia-o para o local de sua preferência. Lembre-se de que a estrutura do arquivo pode variar de acordo com diferentes versões do Quarkus, mas isso deve ser suficiente para o tutorial. O foco principal será modificar o arquivopom.xml e o código-fonte, que permanecem relativamente consistentes entre as versões. Quaisquer pequenas diferenças estruturas devem ser boas para o seu progresso, e você pode consultar a documentação específica da versão, se necessário, para uma experiência de aprendizado perfeita.
Neste ponto, seu arquivo pom.xml deve ficar assim:
1<dependencies>
2 <dependency>
3 <groupId>io.quarkus</groupId>
4 <artifactId>quarkus-resteasy-reactive-jackson</artifactId>
5 </dependency>
6 <dependency>
7 <groupId>io.quarkiverse.jnosql</groupId>
8 <artifactId>quarkus-jnosql-document-mongodb</artifactId>
9 <version>1.0.5</version>
10 </dependency>
11 <dependency>
12 <groupId>io.quarkus</groupId>
13 <artifactId>quarkus-smallrye-openapi</artifactId>
14 </dependency>
15 <dependency>
16 <groupId>io.quarkus</groupId>
17 <artifactId>quarkus-resteasy-reactive</artifactId>
18 </dependency>
19 <dependency>
20 <groupId>io.quarkus</groupId>
21 <artifactId>quarkus-arc</artifactId>
22 </dependency>
23 <dependency>
24 <groupId>io.quarkus</groupId>
25 <artifactId>quarkus-junit5</artifactId>
26 <scope>test</scope>
27 </dependency>
28 <dependency>
29 <groupId>io.rest-assured</groupId>
30 <artifactId>rest-assured</artifactId>
31 <scope>test</scope>
32 </dependency>
33</dependencies>
Por padrão, quakus-jnosql-document-mongodb está na versão 1.0.5, mas a versão mais recente é 3.2.2.1. Você deve atualizar seu pom.xml para usar a versão mais recente:
1<dependency>
2 <groupId>io.quarkiverse.jnosql</groupId>
3 <artifactId>quarkus-jnosql-document-mongodb</artifactId>
4 <version>3.2.2.1</version>
5</dependency>

Configuração do banco de dados

Antes de mergulhar na implementação, é essencial configurar seu MongoDB database corretamente. No MongoDB, você deve definir credenciais e configurações específicas para se conectar à sua instância do banco de dados. O Eclipse JNoSQL fornece um mecanismo de configuração flexível que permite gerenciar essas configurações com eficiência.
Você pode encontrar configurações e configurações detalhadas para vários bancos de dados, incluindo o MongoDB, no repositório do Eclipse JNoSQL no GitHub.
Para executar seu aplicativo localmente, você pode configurar o nome do banco de dados e as propriedades no arquivoapplication.propertiesdo seu aplicativo. Abra este arquivo e adicione a seguinte linha para definir o nome do banco de dados:
1quarkus.mongodb.connection-string=mongodb://localhost:27017
2jnosql.document.database=school
Esta configuração habilitará seu aplicativo para:
  • Use o banco de dados “school”.
  • Conecte-se ao cluster MongoDB disponível na connection string fornecida.
Na produção, certifique-se de ativar o controle de acesso e impor a autenticação. Consulte a lista de verificação de segurança para obter mais detalhes.
Importa realçar que o Eclipse JNoSQL utiliza o Eclipse MicroProfile Configuration, projetado para facilitar a implementação de aplicativos de 12 fatores, especialmente no gerenciamento de configurações. Isso significa que você pode substituir propriedades por variáveis de ambiente, permitindo alternar entre diferentes configurações para desenvolvimento, teste e produção sem modificar seu código. Essa flexibilidade é um aspecto valorizado na construção de aplicativos robustos e facilmente implementáveis.
Agora que seu banco de dados está configurado, você pode prosseguir com o tutorial e criar sua API RESTful com Quarkus e Eclipse JNoSQL para MongoDB.

Criar uma entidade de desenvolvedor

Nesta etapa, criaremos uma entidadeDevelopersimples utilizando registros Java. Crie um novo registro no diretóriosrc/main/java denominado Developer.
1import jakarta.nosql.Column;
2import jakarta.nosql.Entity;
3import jakarta.nosql.Id;
4
5import java.time.LocalDate;
6import java.util.Objects;
7import java.util.UUID;
8
9@Entity
10public record Developer(
11@Id String id,
12@Column String name,
13@Column LocalDate birthday
14) {
15
16 public static Developer newDeveloper(String name, LocalDate birthday) {
17 Objects.requireNonNull(name, "name is required");
18 Objects.requireNonNull(birthday, "birthday is required");
19 return new Developer(
20 UUID.randomUUID().toString(),
21 name,
22 birthday);
23 }
24
25 public Developer update(String name, LocalDate birthday) {
26 Objects.requireNonNull(name, "name is required");
27 Objects.requireNonNull(birthday, "birthday is required");
28 return new Developer(
29 this.id(),
30 name,
31 birthday);
32 }
33}

Criar uma API REST

Agora, vamos criar uma API RESTful para gerenciar registros de desenvolvedores. Crie uma nova classe no src/main/java denominada DevelopersResource.
1import jakarta.inject.Inject;
2import jakarta.nosql.document.DocumentTemplate;
3import jakarta.ws.rs.*;
4import jakarta.ws.rs.core.MediaType;
5import jakarta.ws.rs.core.Response;
6
7import java.time.LocalDate;
8import java.util.List;
9
10@Path("developers")
11@Consumes({MediaType.APPLICATION_JSON})
12@Produces({MediaType.APPLICATION_JSON})
13public class DevelopersResource {
14
15 @Inject
16 DocumentTemplate template;
17
18 @GET
19 public List<Developer> listAll(@QueryParam("name") String name) {
20 if (name == null) {
21 return template.select(Developer.class).result();
22 }
23
24 return template.select(Developer.class)
25 .where("name")
26 .like(name)
27 .result();
28 }
29
30 public record NewDeveloperRequest(String name, LocalDate birthday) {
31 }
32
33 @POST
34 public Developer add(NewDeveloperRequest request) {
35 var newDeveloper = Developer.newDeveloper(request.name(), request.birthday());
36 return template.insert(newDeveloper);
37 }
38
39 @Path("{id}")
40 @GET
41 public Developer get(@PathParam("id") String id) {
42 return template.find(Developer.class, id)
43 .orElseThrow(() -> new WebApplicationException(Response.Status.NOT_FOUND));
44 }
45
46 public record UpdateDeveloperRequest(String name, LocalDate birthday) {
47 }
48
49 @Path("{id}")
50 @PUT
51 public Developer update(@PathParam("id") String id, UpdateDeveloperRequest request) {
52 var developer = template.find(Developer.class, id)
53 .orElseThrow(() -> new WebApplicationException(Response.Status.NOT_FOUND));
54 var updatedDeveloper = developer.update(request.name(), request.birthday());
55 return template.update(updatedDeveloper);
56
57 }
58
59 @Path("{id}")
60 @DELETE
61 public void delete(@PathParam("id") String id) {
62 template.delete(Developer.class, id);
63 }
64}

Testar a API REST

Agora que criamos nossa API RESTful para gerenciar registros de desenvolvedores, é hora de colocá-la em teste. Mostraremos como interagir com a API usando várias solicitações HTTP e ferramentas de linha de comando.

Iniciar o projeto:

1./mvnw compile quarkus:dev

Criar um novo desenvolvedor com POST

Você pode usar a solicitaçãoPOST para criar um novo registro de desenvolvedor. Usaremos curl para esta demonstração:
1curl -X POST "http://localhost:8080/developers" -H 'Content-Type: application/json' -d '{"name": "Max", "birthday": "
22022-05-01"}'
Essa solicitaçãoPOST envia uma carga útil JSON com o nome e o aniversário do desenvolvedor para o endpoint da API. Você receberá uma resposta com os detalhes do desenvolvedor recém-criado.

Leia os desenvolvedores com GET

Para recuperar uma lista de desenvolvedores, você pode usar a GETsolicitação:
1curl http://localhost:8080/developers
Esta solicitação doGETretorna uma lista de todos os desenvolvedores armazenados no banco de dados. Para obter detalhes de um desenvolvedor específico, forneça seu ID exclusivo na URL:
1curl http://localhost:8080/developers/a6905449-4523-48b6-bcd8-426128014582
Essa solicitação retornará as informações do desenvolvedor associadas ao ID fornecido.

Atualizar um desenvolvedor com PUT

Você pode atualizar as informações de um desenvolvedor usando a solicitaçãoPUT :
1curl -X PUT "http://localhost:8080/developers/a6905449-4523-48b6-bcd8-426128014582" -H 'Content-Type: application/json'
2-d '{"name": "Owen", "birthday": "2022-05-01"}'
Neste exemplo, atualizamos o desenvolvedor com o ID fornecido fornecendo um novo nome e aniversário na carga útil JSON.

Exclua um desenvolvedor com DELETE

Por fim, para excluir um registro de desenvolvedor, use a solicitação DELETE:
1curl -X DELETE "http://localhost:8080/developers/a6905449-4523-48b6-bcd8-426128014582"
Essa solicitação remove do banco de dadosa entrada do desenvolvedor associada aoidfornecido .
Seguindo essas etapas simples, você pode interagir com sua API RESTful para gerenciar os registros do desenvolvedor de forma eficaz. Essas solicitações HTTP permitem criar, ler, atualizar e excluir entradas de desenvolvedor, fornecendo controle e funcionalidade totais para sua API.
Explore e adapte esses comandos para atender aos seus casos de uso e requisitos específicos.

Usando OpenAPI para testar e explorar sua API

A OpenAPI é uma ferramenta poderosa que permite testar e explorar sua API visualmente. Você pode acessar a documentação OpenAPI para seu projeto Quartokus na seguinte URL:
1http://localhost:8080/q/swagger-ui/
O OpenAPI fornece uma interface amigável que exibe todos os endpoints disponíveis e suas descrições e permite fazer solicitações de API diretamente do navegador. É uma ferramenta essencial para o desenvolvimento de API porque:
  1. facilita o teste de API: você pode enviar solicitações e receber respostas diretamente da interface OpenAPI, facilitando a verificação da funcionalidade de sua API.
  2. Gera documentação: isso é crucial para desenvolvedores que precisam entender como usar sua API de forma eficaz.
  3. Permite explorar: você pode explorar todos os endpoints disponíveis, seus parâmetros de entrada e as respostas esperadas, o que o ajuda a entender os recursos da API.
  4. Auxilia na depuração: mostra detalhes da solicitação e da resposta, facilitando a identificação e a resolução de problemas.
Concluindo, o uso do OpenAPI junto com sua API RESTful simplifica o processo de teste e pesquisa, melhora a documentação e melhora a experiência geral do desenvolvedor ao trabalhar com sua API. É uma ferramenta essencial nas práticas modernos de desenvolvimento de API.

Conclusão

Neste tutorial, você obteve informações valiosas sobre a criação de uma REST API usando o Quartokus e sua integração perfeita com o Eclipse JNoSQL para MongoDB. Agora você pode gerenciar com eficiência os registros do desenvolvedor por meio de uma API unificada, simplificando suas operações de banco de dados NoSQL. No entanto, para levar sua experiência com o MongoDB ainda mais longe e aproveitar todo o poder do MongoDB Atlas, considere migrar seu aplicativo para o MongoDB Atlas.
O MongoDB Atlas oferece um poderoso modelo de documento, permitindo que você armazene dados como objetos semelhantes a JSON que se assemelham muito ao seu código de aplicativo. Com o MongoDB Atlas, você pode aproveitar suas ferramentas e linguagens de programação preferidas. Quer você gerencie seus clusters por meio da CLI do MongoDB para Atlas ou adote ferramentas de infraestrutura como código (IaC) como Terraform ou Cloudformation, o MongoDB Atlas fornece uma solução contínua e escalável para suas necessidades de banco de dados.
Pronto para explorar os benefícios do MongoDB Atlas? Comece agora experimentando o MongoDB Atlas.
Acesse o código-fonte usado neste tutorial.
Alguma pergunta? Venha conversar conosco no MongoDB Community.

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Tutorial

Projetos de coleção única no MongoDB com dados Spring (Parte 1)


Sep 09, 2024 | 10 min read
Artigo

Java x Kotlin: sintaxe diferente, mesmas possibilidades


Nov 25, 2024 | 5 min read
Tutorial

Explorando os recursos avançados do Atlas Search com o MongoDB Atlas Atlas Search


Aug 20, 2024 | 6 min read
Artigo

Orquestração do MongoDB com o Spring e Atlas Kubernetes Operator


Jun 12, 2024 | 13 min read
Sumário