Desenvolver aplicativos Node.js com o Express é, sem dúvida, uma opção muito popular, mas não é a única opção e pode até não ser a melhor opção. Recentemente, comecei a pesquisar Hapi que se define como uma estrutura para serviços, algo que não era exatamente uma coisa quando o Express surgiu.

Anteriormente, eu havia escrito sobre Criação de uma API RESTful com Node.js e Expressmas, desta vez, vamos explorar a possibilidade de fazer o mesmo com o Hapi.

Antes de investirmos muito no código, precisamos descobrir o que exatamente vamos construir. O objetivo aqui é criar um aplicativo de dois endpoints. Um endpoint deve nos permitir criar dados no banco de dados e o outro deve nos permitir ler do banco de dados.

Crie um novo diretório de projeto em algum lugar do seu computador e execute o seguinte comando no prompt de comando dentro desse diretório:

O comando acima criará um novo projeto Node.js estabelecendo um projeto package.json arquivo. A próxima etapa é instalar cada uma das dependências do projeto.

Execute o seguinte na linha de comando:

O comando acima baixará o SDK do Couchbase Node.js, a estrutura Hapi, o Joi para validação de dados e um pacote para gerar valores UUID para representar nossas chaves de documento NoSQL.

Vá em frente e crie um app.js em seu projeto. É aqui que teremos todas as nossas informações de roteamento e lógica de banco de dados. Abra esse arquivo app.js e inclua o seguinte código JavaScript:

O código acima nos ajudará a começar. Ele importa cada uma das dependências do nosso projeto, inicializa o Hapi para um host e uma porta específicos e estabelece uma conexão com o Couchbase. Também definimos uma única rota para representar nossa rota raiz.

Para este exemplo, o Couchbase será executado localmente e usaremos um Bucket chamado padrão. Para obter informações sobre a instalação do Couchbase, consulte meus tutoriais para Mac, Linuxe Windows.

Agora podemos nos preocupar com nossos dois pontos de extremidade que interagem com o banco de dados.

O primeiro ponto de extremidade, provavelmente o mais simples, será o retorno de uma lista de documentos, neste caso, pessoas que foram criadas anteriormente:

Observe o manipulador method. Nele, construímos uma consulta N1QL que obtém todos os documentos que têm um tipo que corresponde à propriedade pessoa. Isso significa que podemos ter muitos outros tipos de documentos que não serão detectados por nossa consulta.

Se houver um problema com a consulta, retornaremos um erro com um código de resposta 500; caso contrário, retornaremos os resultados da consulta.

O próximo ponto de extremidade é onde usamos o Joi para validação de dados. Dê uma olhada no código JavaScript a seguir:

Quando um cliente tenta consumir a partir desse endpoint, a validação acontece como parte do Hapi. Nesse processo de validação, inspecionamos a carga útil e garantimos que cada uma de nossas propriedades atenda aos critérios. Nesse caso, ambas as propriedades primeiro nome e sobrenome precisam estar presentes. É proibido a um tipo e carimbo de data/hora para existir no corpo da solicitação. Se existirem, será retornado um erro. Se não existirem, será usado um valor padrão.

Se nossa validação for aprovada, poderemos inserir os dados no Couchbase com um ID exclusivo. Os dados também serão retornados na resposta.

Conclusão

Você acabou de ver como criar uma API RESTful muito simples com o Hapi e o Servidor Couchbase. Tenho usado o Express desde o início, mas quando se trata do Hapi, sinto que ele foi muito mais bem projetado para a criação de serviços da Web. No entanto, ambos dão conta do recado e, se você quiser ver uma alternativa ao Express, dê uma olhada neste tutorial anterior Eu escrevi.

Para obter mais informações sobre como usar o Couchbase com o Node.js, consulte o Portal do desenvolvedor do Couchbase.

Autor

Postado por Nic Raboy, defensor dos desenvolvedores, Couchbase

Nic Raboy é um defensor das modernas tecnologias de desenvolvimento móvel e da Web. Ele tem experiência em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experiências de desenvolvimento relacionadas a tornar o desenvolvimento móvel e da Web mais fácil de entender.

Um comentário

  1. Parece que isso pode estar um pouco desatualizado com as alterações do Hapi.js, portanto, se você estiver usando uma versão mais recente do Hapi, tive que codificá-lo da seguinte forma

    const Hapi = require("hapi");
    const Couchbase = require("couchbase");
    const UUID = require("uuid");
    const Joi = require("joi");

    const server = new Hapi.Server({
    host: 'localhost',
    porto: 3000
    });
    const N1qlQuery = Couchbase.N1qlQuery;

    const cluster = new Couchbase.Cluster("http://localhost");
    const bucket = cluster.openBucket("default", "");

    server.route({
    método: "GET",
    caminho: "/",
    handler: (request, response) => {
    retornar "Hello World";
    }
    });

    server.start(error => {
    if(error) {
    lançar erro;
    }
    console.log("Listening at " + server.info.uri);
    });

Deixar uma resposta