Typescript: web api — OvernightJS

Ricardo Torquato
3 min readMay 5, 2019

--

Fala galera, tudo bem?

Há bastante tempo estou querendo escrever sobre muitas coisas que venho utilizando como uma forma de consolidar conhecimento e de também auxiliar e mostrar coisa nova pra quem ainda não as conhece…

Infelizmente, com a correria do dia a dia em nossas vidas acabamos postergando nossas vontades e projetos…

Hoje, enfim, cá estou tentando trazer um pouco de conhecimento a quem estiver disposto a gastar um tempinho lendo isso aqui…

O que veremos aqui?

A ideia é trazer algumas tecnologias que venho trabalhando e mostrar elas sendo utilizadas na prática com uma to-do api…

Este primeiro artigo terá somente a estrutura da api utilizando OvernightJS e por isso não terá ainda uma to-do api funcionando.

Configurando básico do typescript

Bom, vamos começar então instalando a lib de typescript no seu projeto:

npm install --save-dev typescript

Após isso vamos criar o arquivo tsconfig.json :

E dentro do seu package.json vamos criar o script de build:

"scripts": {
"build": "tsc"
}

Isso já irá possibilitar que tudo que for criado em typescript dentro da sua pasta src seja transpilado para javascript dentro da pasta dist e, uma vez que você tem o javascript, pode executá-lo com node.

OvernightJS

O OvernightJS nos irá disponibilizar alguns decorators pra ficar um pouco mais fácil criar nossas rotas do ExpressJS e, diga-se de passagem, um pouco mais elegante também.

Vamos instalar as libs necessárias no nosso projeto:

npm install --save express @overnightjs/core

E para podermos acessar de dentro do typescript tudo do express:

npm install --save-dev @types/express

Status Controller

Como eu disse, nesse artigo não teremos a todo-api pronta. Então, para podermos ter algo para acessar e verificar se está tudo funcionando, vamos criar uma controller com um único endpoint.

Este endpoint irá nos retornar uma mensagem nos informando que a api está rodando.

Como podem ver temos os decorators Controller e Get sendo utilizados no exemplo acima.

Fazendo com que quando acessarmos em nosso server a url /status iremos direto pra dentro dessa função get do nosso controller.

Server

Nosso server não se diferencia muito do que muitos estão acostumados no express.

Teremos somente que adicionar nossos controllers lá dentro dele:

Nosso server então nada mais é que uma classe que estende o Server do @overnightjs/core .

Por este exemplo acima, também podemos ver que a classe possui um atributo app onde podemos acessar o express e chamar seus métodos e a classe possui um método addControllers para que os controller que geramos possam estar ali dentro.

Adicionando libs ao express

Com tudo que já vimos acima, podemos concluir então que é possível e de uma forma bem simples adicionar bibliotecas ao express como costumamos fazer.

O exemplo abaixo eu adiciono o body-parser no projeto. Afinal de contas, ele será útil na próxima etapa do projeto para podermos capturar de forma correta os bodies dos nossos requests:

Start do Server

Bom, para finalizar fica o start do nosso server. Também de forma bem simples de ser utilizado.

E podemos então adicionar alguns novos scripts no nosso package.json :

"scripts": {
"build": "tsc",
"start": "npm run build && node dist/index.js",
"start:dev": "ts-node src/index.ts"
}

Para o script start:dev será necessário adicionar a biblioteca:

npm install --save-dev ts-node

Link do repositório

Este artigo paramos por aqui, no repositório abaixo é possível ver os códigos que eu fiz enquanto escrevia este artigo:

https://github.com/ricardotorquato/typescript-todo-api/tree/1.0.0

Há algumas coisas a mais no repositório também, vale a pena dar uma olhada.

Obrigado e até a próxima!

--

--

Ricardo Torquato

I'm a Software Engineer trying to improve and excel myself!