API Restful com Node.js, Express, Typescript, Sequelize, Postgres, Redis e Docker

By Roberto Lima
Picture of the author
Published on
Django databases

API Restful com Node.js, Express, Typescript, Sequelize, Postgres, Redis e Docker

Este artigo apresenta um repositório de código que implementa uma API Restful com as seguintes tecnologias:

  • Node.js
  • Express
  • Typescript
  • Sequelize
  • Postgres
  • Redis
  • Docker

A API é simples e implementa um CRUD básico para uma entidade de usuários. Ela pode ser usada como um ponto de partida para a construção de APIs mais complexas.

Tecnologias utilizadas Node.js é uma plataforma de desenvolvimento de aplicações web e de servidor baseada no JavaScript.

Express é um framework web para Node.js que facilita o desenvolvimento de APIs Restful.

TypeScript é uma linguagem de programação fortemente tipada que é baseada no JavaScript.

Sequelize é um ORM que facilita o acesso a bancos de dados relacionais com Node.js.

Postgres é um banco de dados relacional popular.

Redis é um cache de memória não relacional.

Docker é uma plataforma de virtualização que facilita o desenvolvimento e a implantação de aplicações.

Instalação Para instalar a API, siga os seguintes passos:

Clone o projeto:
$ git clone git@github.com:robertolima-dev/api-reference-ts.git
Acesse o diretório do projeto:
$ cd api-reference-ts
Instale as dependências:
$ npm install
Inicie o Redis com Docker
$ docker run --name redis-client -v redisinsight:/db -p 8801:8001 -d -t redislabs/redisinsight:latest
Crie um arquivo .env e add:
########## MODE ENV ##########
NODE_ENV=development

########## API ENV ##########
PORT=4001
APP_SECRET=

########## DB ENV POSTGRES ##########
DB_HOST=
DB_USER=
DB_PORT=
DB_PASSWORD=
DB_NAME=
DB_DIALECT=

DB_POOL_ACQUIRE=30000
DB_POOL_IDLE=10000
DB_DIALECT=mysql
DB_POOL_MAX=10
DB_POOL_MIN=0
DB_OPERATOS_ALIASES=false

########## REDIS ENV ##########
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASS=
Rode as migrações:
$ npm run db:migrate
Inicie o projeto:
$ npm run dev

A API será iniciada no endereço (http://localhost:4001).

Model:

Essa api já tem um model criado com os seguintes dados abaixo:

module.exports = (sequelize, DataTypes) => {
  const User = sequelize.define(
    'User',
    {
        name: DataTypes.STRING,
        email: DataTypes.STRING,
        password: DataTypes.STRING,
        phone: DataTypes.STRING,
        avatar: DataTypes.STRING,
        status: DataTypes.BOOLEAN
    },
    {
      timestamps: true,
      paranoid: true
    }
  )

  User.associate = function(models) {

  }
  return User
}

O CRUD já está pronto nas seguintes rotas: URL_BASE = (http://localhost:4001)


POST:

(URL_BASE/api/v1/users)


GET LIST:

(URL_BASE/api/v1/users)


GET SHOW:

(URL_BASE/api/v1/users/:user_id)


PUT:

(URL_BASE/api/v1/users/:user_id)


DELETE:

(URL_BASE/api/v1/users/:user_id)


Repositório GitHub

Fique atento

Quer saber mais sobre JavaScript e Python?
Receba os melhores artigos sobre desenvolvimento em sua caixa de entrada!