Criando e executando um projeto Hapi.js
O que é Hapi.js?
Hapi.js é um framework poderoso e flexível para construção de aplicativos e serviços com Node.js. Criado pelo Walmart Labs, é conhecido por seu sistema de plugins e funcionalidades ricas. Hapi.js oferece uma maneira simples de lidar com solicitações e respostas HTTP, permitindo que desenvolvedores construam aplicativos web de alto desempenho e APIs de forma mais eficiente.
Principais características e vantagens do Hapi.js
- Sistema de Plugins: Hapi.js possui um sistema de plugins robusto, facilitando a extensão e reutilização do código.
- Sistema de Rotas: Proporciona uma definição e um manejo de rotas flexíveis e poderosos.
- Validação de Entrada: Funcionalidade de validação de entrada embutida, garantindo a integridade e segurança dos dados.
- Ecossistema Rico: Possui uma ampla gama de plugins e suporte da comunidade, abrangendo diversas necessidades comuns.
- Segurança: Possui várias funcionalidades de segurança embutidas, como proteção contra Cross-Site Request Forgery (CSRF) e Cross-Site Scripting (XSS).
Utilizando Hapi.js, os desenvolvedores podem construir rapidamente aplicativos web e APIs de alto desempenho e seguros.
Criando e executando um projeto Hapi.js com ServBay
Neste artigo, usaremos o ambiente Node.js fornecido pelo ServBay para criar e executar um projeto Hapi.js. Utilizaremos a funcionalidade de 'hospedagem' do ServBay para configurar o servidor web e acessar o projeto via proxy reverso.
Criando um projeto Hapi.js
Inicializando o projeto
Primeiro, verifique se você já instalou o ambiente Node.js fornecido pelo ServBay. Depois, na raiz recomendada do site
/Applications/ServBay/www
, crie um novo projeto Hapi.js:bashcd /Applications/ServBay/www mkdir servbay-hapi-app cd servbay-hapi-app npm init -y npm install @hapi/hapi
1
2
3
4
5Criando o arquivo de aplicação
Crie um arquivo
server.js
na raiz do projeto e adicione o seguinte código:javascriptconst Hapi = require('@hapi/hapi'); const init = async () => { const server = Hapi.server({ port: process.env.PORT || 3000, host: 'localhost' }); server.route({ method: 'GET', path: '/', handler: (request, h) => { return 'Hello ServBay!'; } }); await server.start(); console.log('Server running on %s', server.info.uri); }; process.on('unhandledRejection', (err) => { console.log(err); process.exit(1); }); init();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Entrar em modo de desenvolvimento
Executando o servidor de desenvolvimento
Inicie o servidor de desenvolvimento e especifique a porta (por exemplo: 8585):
bashPORT=8585 node server.js
1Isso iniciará um servidor de desenvolvimento local e exporá a porta 8585.
Configurando o proxy reverso da hospedagem do ServBay
Utilize a funcionalidade de 'hospedagem' do ServBay para acessar o servidor de desenvolvimento através de um proxy reverso. Nas configurações de 'hospedagem' do ServBay, adicione um novo proxy reverso:
- Nome:
My first Hapi.js dev site
- Domínio:
servbay-hapi-test.dev
- Tipo de host:
Proxy reverso
- IP:
127.0.0.1
- Porta:
8585
Para detalhes sobre a configuração, veja adicionando um site de desenvolvimento Nodejs.
- Nome:
Acessando o modo de desenvolvimento
Abra o navegador e acesse
https://servbay-hapi-test.dev
para visualizar o projeto em tempo real. Com o suporte do ServBay para domínios personalizados e certificados SSL gratuitos, você desfrutará de maior segurança.
Implantando a versão de produção
Preparando o ambiente de produção
Garanta que seu projeto pode funcionar normalmente no ambiente de produção. Normalmente, projetos Hapi.js não requerem etapas especiais de construção, mas pode ser necessário definir algumas variáveis de ambiente ou outras configurações.
Executando o servidor de produção
Inicie o servidor de produção e especifique a porta (por exemplo: 8586):
bashPORT=8586 NODE_ENV=production node server.js
1Configurando o proxy reverso da hospedagem do ServBay
Utilize a funcionalidade de 'hospedagem' do ServBay para acessar o servidor de produção através de um proxy reverso. Nas configurações de 'hospedagem' do ServBay, adicione um novo proxy reverso:
- Nome:
My first Hapi.js production site
- Domínio:
servbay-hapi-test.prod
- Tipo de host:
Proxy reverso
- IP:
127.0.0.1
- Porta:
8586
- Nome:
Acessando o modo de produção
Abra o navegador e acesse
https://servbay-hapi-test.prod
para visualizar a versão de produção. Com os domínios personalizados do ServBay e certificados SSL gratuitos, seu site será mais seguro e confiável.
Conexão com banco de dados
ServBay oferece suporte para bancos de dados Redis, MariaDB, PostgreSQL e MongoDB. Abaixo estão exemplos de como conectar esses bancos de dados.
Conectando ao MongoDB
Instale
mongoose
:bashnpm install mongoose
1Em seguida, no projeto, importe e conecte:
javascriptconst mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/servbay-hapi-app', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('MongoDB connected')) .catch(err => console.log(err));
1
2
3
4
5Conectando ao Redis
Instale
redis
:bashnpm install redis
1Em seguida, no projeto, importe e conecte:
javascriptconst redis = require('redis'); const client = redis.createClient(); client.on('error', function (err) { console.log('Error ' + err); }); client.on('connect', function () { console.log('Redis client connected'); });
1
2
3
4
5
6
7
8
9
10Conectando ao MariaDB
Instale
mariadb
:bashnpm install mariadb
1Em seguida, no projeto, importe e conecte:
javascriptconst mariadb = require('mariadb'); const pool = mariadb.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'servbay_hapi_app' }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB"); conn.release(); //release to pool }) .catch(err => { console.log("Not connected due to error: " + err); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16Conectando ao PostgreSQL
Instale
pg
:bashnpm install pg
1Em seguida, no projeto, importe e conecte:
javascriptconst { Pool } = require('pg'); const pool = new Pool({ user: 'user', host: 'localhost', database: 'servbay_hapi_app', password: 'password', port: 5432, }); pool.connect((err, client, done) => { if (err) throw err; console.log('Connected to PostgreSQL'); done(); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Seguindo os passos acima, você criou e executou com sucesso um projeto Hapi.js usando as funcionalidades fornecidas pelo ServBay para gerenciar e acessar seu projeto, além de conectar-se a vários bancos de dados.