DEV Community

Fernando Santos
Fernando Santos

Posted on • Updated on

Criando uma api REST com Koa & mongoDB - Parte 1

Koa é uma framework de desenvolvimento web projetada pela equipe por trás do tão conhecido Express, que visa ser robusta para aplicações web. Nesta série de artigos, vamos criar uma api REST utilizando a stack já mencionada no título e por fim escrever um teste básico com jest. Vamos partir da premissa de que você já tenha sólidos conhecimentos de javascript/node/backend no geral. Sem mais delongas, vamos ao que interessa.

Preparando o ambiente

Caso você não tenha feito download do node na sua máquina, pode faze-lo aqui.

Feito isso, crie uma pasta, onde ficará o nosso projeto e acesse-a com o terminal.

tip: No windows, você pode digitar cmd na barra de endereço do gerenciador de arquivos.

Agora sim, podemos execultar o nosso npm init --y . Se tudo aconteceu como esperado, na pasta a qual estamos trabalhando foi gerado automaticamente um arquivo por nome de package.json. Nele, temos as informações crucias para o nosso projeto, bem como nome, versão, quais dependências estamos utilizando e etc.

E então, vamos instalar o koa com o seguinte comando: npm i koa.

Utilizaremos o Babel, caso você não saiba do que se trata, recomendo dar uma olhada na documentação neste link.

Perfeito!!!

Abra o diretório que estamos trabalhando no seu editor de código predileto.

tip: se você usa o Visual Studio Code, é só dar um 'code .' no terminal e já é.

para que o babel funcione, crie um arquivo .babelrc com o seguinte conteúdo:

{
    "presets": ["env"]
}

e agora adicione "babel": "babel-node index.js" nos scripts do seu package.json, que completo deve ficar assim:

{
  "name": "koa-api",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "babel": "babel-node index.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "koa": "^2.8.1"
  },
  "devDependencies": {
    "babel-cli": "^6.16.0",
    "babel-preset-latest": "^6.16.0"
  }
}

O tão esperado hello world

Crie o arquivo index.js e vamos começar importando o framework e inicializando a app:

import Koa from 'koa';
const app = new Koa();

defina a porta para o server:


const port = 3000;

e pra finalizar:

app.use(async ctx => {
  ctx.body = 'Hello World';
});

app.listen(port);

E pronto, nosso hello world já esta funcionado, basta ir no terminal, digitar npm run babel e abrir o navegador no endereço : localhost:3000 (caso você queira rodar em uma outra porta, é só alterar a variável port).

Agora vamos criar nossa primeira rota e é agora que o koa-router entra em ação. Para obtê-lo, use o comando npm i koa-router.

E então, vamos importá-lo no index.js :

import Router from 'koa-router';
const router = Router();

e agora, substitua a parte do hello world por:

router.get('/', (ctx, next) => {
 ctx.body = 'Hello World from homepage!';
});

app.use(router.routes());
app.use(router.allowedMethods());

e pronto, nossa primeira rota já esta pronta, basta executar o server pra conferir.

Na próxima parte desta série, vamos começar a trabalhar com o banco de dados e criar as rotas definitivas da nossa api. Enquanto isso, deixarei aqui links de conteúdos que podem ser complementares:

Koa docs
exemplo de api com koa, mongo, babel e jest
entendendo async e await
ES6 no nodejs
mongoose docs

Top comments (0)