criando API REST com typeScript utilizando o NodeJS
Published: 2022-07-14 19:48:47

Nesse artigo irei falar sobre uma introdução ao typeScript e criar uma API REST Express.

Para criação da  API irei utilizar o Visual Studio Code (VSC) e o INSOMNIA.
       
Criando estrutura novo projeto

Abrir o terminal e criar uma nova pasta que será a raiz do projeto.

Iniciar o yarn para trazer mais funcionalidades e vantagens para o desenvolvimento
`yarn init -y`

abrir o visual studio code
`code .`

Instalar as dependencias do express
`yarn add express`

Assim que as dependencias forem instaladas irá ser criado o package.json

Criar pasta 'src' e dentro dela criar um arquivo `server.ts` esse arquivo tem a extensão do typeScript o VSC já identifica esse padrão.

Abrir o arquivo `server.ts` e importar o express
`import express from 'express'`

Adicionar biblioteca do express com dependencia de desenvolvimento
`yarn add@types/express - D`

Ao importar a biblioteca do express o typeScript traz tudo que tem disponivel para ser utilizado. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aviqscuitgly5u3mr2vh.png)

Necessário converter o arquivo 'server.ts' para codigo JavaScript de uma forma que o node.js consiga entender tudo aquilo que esta sendo declarado para executar o arquivo. Para fazer isso instalar com dependência de desenvolvimento 

`yarn add typescript -D`

Inicializar o typeScript. Será criado o arquivo tsconfig.json que é um arquivo de configuração

`yarn tsc --init`

Converter o código para o javascript. Ao fazer isso irá criar um novo arquivo com o formado javaScript

`yarn tsc`

ao executar o `yarn tsc` é criado um arquivo dentro da pasta local. Se tiver vários arquivos ira criar um arquivo com formato js para cada um ocasionando em confusão.

Para resolver esse problema ver o [artigo](https://dev.to/heverton/como-configurar-ts-node-dev-no-typescript-5ech) que fala sobre a configuração de uma ferramenta que faça a conversão de forma automática.


Criar uma pasta chamada rotas onde iremos começar separando as rotas da aplicação.

Criar um arquivo `modelo.Rotas.ts`. Importar dentro do express o Router (Router é uma interface)

` import {Router} from 'express' `   

criar constante para rota

` const rota = Router(); `

exportar a rota para ser acessivel dentro de outra classe

` export {modeloRota} `

Criar uma rota de post. Para a rota funcionar corretamente a API REST precisa que o recurso seja bem definido, e o recurso sera o `modelo`. A rota vai receber as informações de dentro do request e a partir dai vai fazer o cadastro do modelo.

criar um array de modelo 

`const modelo = [];`

usar modelo.push passando o nome e a descrição. 

		modelo.push({
		nome,
		descricao
	  	  }); 

 
dar um retorn com o status 201 informando que um objeto foi criado.
   		`return response.status(201).send();`

Abrir o arquivo `server.ts` importar a rota

`import { modeloRota } from './rotas/modelo.rotas';`

usar o a rota

` app.use(modeloRota); `

Abrir o Insomnia

criar um arquivo e definir metodo criar, do tipo post, que vai receber um json e passar os dados desejados para que a aplicação receba esses valores:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ixg0k6oxf7g2bl1zyhrr.png)

O servidor do VSC precisa estar iniciado para que o insomnia retorno sucesso:

`yarn dev `

Se o servidor rodar com sucesso basta clicar em 'send' no insomnia e sera executado com suscesso. Assim o metodo de cadastro de modelo já esta funcionando.