Rest API
O que é uma API: parte I
Interface
de Programação de Aplicações cuja sigla API provém do inglês Application
Programming Interface é um conjunto de rotinas e padrões estabelecidos por um
software para realizar troca de dados entre sistemas diferentes permitindo a
automatização de processos e facilitando a criação de novas funcionalidades.
Através
de uma API é possível por exemplo, criar, ler, atualizar e deletar informações
sem precisar acessar esses dados diretamente, cabendo a ela receber o dado,
processar internamente e de acordo com o conjunto de funções da API, devolver o
resultado esperado para o usuário de forma segura e rápida.
É
possível criar uma API para diversas finalidades, para o funcionamento de uma
rede social, gerenciamento de vendas, preenchimento de planilhas, apps de streaming a
aplicativos de relógios inteligentes, sendo seu acesso privado ou público.
O
REST – Representational State Transfer ou Transferência de Estado
Representacional, trata-se de um conjunto de princípios e definições utilizadas
para a criação de interfaces bem definidas permitindo a comunicação entre
aplicações.
GET:
o front recebe os dados
DELETE:
exclui os dados
As
aplicações existentes no cliente e no servidor devem ser separadas, assim o
cliente não precisa se preocupar com a comunicação com o banco de dados, cache,
log etc. E o servidor não precisa se preocupar com a interface, experiência do
usuário, dentre outros.
Sem
estado
O cliente pode mandar várias requisições para o servidor, mas as requisições devem ser feitas de forma independente.
Cache
A
API deve utilizar o cache, evitando processamento desnecessário e aumentando a
performance.
Interface
Uniforme
São pequenas regras para deixar um componente o mais genérico possível, o tornando mais fácil de ser refatorado e melhorado:
• Identificação de resource: cada recource deve ter uma URI especifica e coesa.
• Representação
do resource: é a forma como a informação vai ser devolvida para o cliente. Ex:
HTML, XML, JSON, TXT.
• Resposta
autoexplicativa: passagem de meta informações de forma clara.
Para a construção dessa REST API iremos precisar inicialmente do node.js e Typescript instalados na máquina, além de uma IDE (editor de código) de sua preferência, irei instalar e recomendo o Visual Studio Code pois é amigável, intuitivo, fácil de usar e completo na minha opinião.
Criando uma Rest API
1. Instalando o Básico
Depois de ter instalado o node.js e o visual studio code, crie uma pasta onde preferir no seu sistema, abra o vscode, clique em arquivo > abrir pasta, e selecione a pasta que acabou de criar. Pressione no teclado Ctrl + ‘ para visualizar o terminal e digite o código abaixo para criar o arquivo .json:
npm init -y
Em
seguida instale o typescript e o ts-node-dev, este último é uma ferramenta que irá
compilar o projeto em Typescript e reiniciar automaticamente quando detectar mudança
nos arquivos.
npm install typescript ts-node-dev --save-dev
Abra o arquivo pakage.json e na sessão “scripts”,
apague a linha “test” e inclua a linha abaixo:
"start": "ts-node-dev --respawn --transpile-only src/server.ts",
Explicando de forma resumida, “start” vai ser o comando utilizado para rodar a aplicação e ts-node-dev chama a aplicação.
A
flag ‘--respawn’
pede ao ts-node para que fique observando alterações no código.
A
flag ‘--transpile-only’
pede para o ts-node somente transpilar o código (transformar
de TS para JS), sem fazer verificação se o código está certo, isso poupa tempo
pois não precisamos fazer essa verificação enquanto desenvolvemos, iremos
instalar uma ferramenta chamada Eslint (amado por muitos e odiado pela torcida
do flamengo) que irá fazer essas verificações e nos pôr na linha.
Não
esquecendo que ‘src/server.ts’
é o caminho do arquivo principal que será
executado.
Cole
este código conforme a instrução abaixo, o vscode irá cria a pasta e o arquivo
dentro dela.
src/server.ts
2. Configurando o Typescript
Agora vamos criar e configurar o arquivo tsconfig.json.
npx tsc --init
Dentro dele procure por essas seguintes chaves e configure seus valores da seguinte forma (não esqueça de remover a tag [ //
] de comentario do seu arquivo).
"target": "es2017" // especifica a versão do Javascript que será compilada
"experimentalDecorators": true // Permite o uso de Decorators;
"emitDecoratorMetadata": true // Mais a frente será explicado o que é Decorators;
"outDir": "./build" // Especifica o diretório de saída dos arquivos compilados;
Vamos instalar o Express, no terminal digite:
npm install express
Instale os tipos do express:
npm install @types/express --save-dev
No arquivo server.ts iremos realizar uma configuração básica do express.
import express from 'express' // Importa o express para ser utilizado no arquivo server.ts
const app = express() // Criada uma constante para receber o express;
app.use(express.json()) // Informo ao express que ele deve usar arquivos json, que será o corpo (body) da nossa requisição;
app.listen(3333,() => console.log('Server is listening on port: 3333')) // Peço para que o express ouça a porta 3333 (http://localhost:3333), por aqui acessaremos nossa API. O console log é só para sabermos se está tudo ok quando a aplicação rodar.
Na pasta src crie o arquivo routes.ts nele iremos (futuramente) colocar nossas rotas. Insira o seguinte código:
import { Router } from "express" // importa o Router do express.
const router = Router(); // criamos uma constante com o Router.
export default router; // exportamos a constante router como padrão.
De volta no server.ts importe o routes.
import routes from './routes'
E informe ao express que ele deve utilizar o routes. Deixe esse código abaixo do app.use(express.json()) pois o JS realiza leitura sequencial (na ordem em que definimos), ou seja, ele varre o documento de cima para baixo. Se colocarmos app.use(routes) antes, o express não consegue associar a requisição vinda da rota, consequentemente ele não pegará o conteúdo do body (app.use(express.json())).
app.use(routes);
Agora vamos testar com o script que criamos no package.json. Digite no console:
npm start
REFERÊNCIAS
Imasters,
Definição, restrições e benefícios do modelo de arquitetura REST. RICARDO
PLANSKY, 02 out 2014. Disponível em: <https://imasters.com.br/desenvolvimento/definicao-restricoes-e-beneficios-modelo-de-arquitetura-rest#:~:text=As%20restri%C3%A7%C3%B5es%20do%20REST&text=%C3%89%20a%20restri%C3%A7%C3%A3o%20b%C3%A1sica%20para,de%20cache%2C%20log%2C%20etc>.
Acesso em 04 mai 2022.
Express. Guia. Fundação Node.js. Disponível em: <https://expressjs.com/pt-br/guide/routing.html>. Acesso em 04 mai 2022.
Typescript. Doc, Microsoft. Disponível em: <https://www.typescriptlang.org/docs/>. Acesso em 04 mai 2022.
0 Comentários