Projeto que contém uma aplicação Node.js
, que utiliza do pacote Sequelize
para fazer um CRUD
de posts. Construindo uma API e um banco de dados para produção de conteúdo para um blog.
Back-end:
Desenvolvido usando: Node.JS, JavaScript, Express, CRUD, Sequelize, JWT
Rode os serviços
node
edb
com o comandodocker-compose up -d --build
.
- Lembre-se de parar o
mysql
se estiver usando localmente na porta padrão (3306
), ou adapte, caso queira fazer uso da aplicação em containers - Esses serviços irão inicializar um container chamado blogs_api e outro chamado blogs_api_db;
- A partir daqui você pode rodar o container blogs_api via CLI ou abri-lo no VS Code;
Use o comando
docker exec -it blogs_api bash
.
- Ele te dará acesso ao terminal interativo do container criado pelo compose, que está rodando em segundo plano.
Instale as dependências [Caso existam] com
npm install
Instale as dependências [Caso existam] com
npm install
Para rodar o projeto desta forma, obrigatoriamente você deve ter o node
instalado em seu computador.
-
Para rodar a aplicação é necessário rodar o comando abaixo e acessar as rotas disponíveis em um app como Postman ou no seu navegador com o
localhost:3000
:npm start
Para iniciar o Banco de dados e migrar as informações utilize
npm run prestart
-
/login - POST
Endpoint disponível para fazer login de uma pessoa usuária:
- O endpoint deve receber a seguinte estrutura:
{ "email": "lewishamilton@gmail.com", "password": "123456" }
-
/user - POST
Endpoint disponível para cadastrar uma pessoa usuária:
{ "displayName": "Brett Wiltshire", "email": "brett@email.com", "password": "123456", "image": "http://4.bp.blogspot.com/_YA50adQ-7vQ/S1gfR_6ufpI/AAAAAAAAAAk/1ErJGgRWZDg/S45/brett.png" }
-
/users - GET
Endpoint disponível para listar pessoas usuárias:
[ { "id": 1, "displayName": "Lewis Hamilton", "email": "lewishamilton@gmail.com", "image": "https://upload.wikimedia.org/wikipedia/commons/1/18/Lewis_Hamilton_2016_Malaysia_2.jpg" }, /* ... */ ]
-
/users/:id - GET
Endpoint disponível para listar uma pessoa usuária por seu id:
{ "id": 1, "displayName": "Lewis Hamilton", "email": "lewishamilton@gmail.com", "image": "https://upload.wikimedia.org/wikipedia/commons/1/18/Lewis_Hamilton_2016_Malaysia_2.jpg" }
-
/categories - POST
Endpoint disponível para cadastrar categorias:
- O endpoint deve receber a seguinte estrutura:
{ "name": "Typescript" }
-
/categories - POST
Endpoint disponível para cadastrar categorias:
[ { "id": 1, "name": "Inovação" }, { "id": 2, "name": "Escola" }, /* ... */ ]
-
/post - POST
Endpoint disponível para um novo blog post e vinculá-lo as categorias:
- O endpoint deve receber a seguinte estrutura:
{ "title": "Latest updates, August 1st", "content": "The whole text for the blog post goes here in this key", "categoryIds": [1, 2] }
-
/post - GET
Endpoint disponível para listar blogs posts:
[ { "id": 1, "title": "Post do Ano", "content": "Melhor post do ano", "userId": 1, "published": "2011-08-01T19:58:00.000Z", "updated": "2011-08-01T19:58:51.000Z", "user": { "id": 1, "displayName": "Lewis Hamilton", "email": "lewishamilton@gmail.com", "image": "https://upload.wikimedia.org/wikipedia/commons/1/18/Lewis_Hamilton_2016_Malaysia_2.jpg" }, "categories": [ { "id": 1, "name": "Inovação" } ] }, /* ... */ ]
-
/post/:id - GET
Endpoint disponível para listar um blog post por seu id:
{ "id": 1, "title": "Post do Ano", "content": "Melhor post do ano", "userId": 1, "published": "2011-08-01T19:58:00.000Z", "updated": "2011-08-01T19:58:51.000Z", "user": { "id": 1, "displayName": "Lewis Hamilton", "email": "lewishamilton@gmail.com", "image": "https://upload.wikimedia.org/wikipedia/commons/1/18/Lewis_Hamilton_2016_Malaysia_2.jpg" }, "categories": [ { "id": 1, "name": "Inovação" } ] }
-
/post/:id - DELETE
Endpoint disponível para deletar um blog post por seu id;
-
/post/search?q=:searchTerm - GET
Endpoint disponível para procurar blog posts que contenham em seu título ou conteúdo o termo passado na URL
- Ex.:
// GET /post/search?q=Vamos que vamos [ { "id": 2, "title": "Vamos que vamos", "content": "Foguete não tem ré", "userId": 1, "published": "2011-08-01T19:58:00.000Z", "updated": "2011-08-01T19:58:51.000Z", "user": { "id": 1, "displayName": "Lewis Hamilton", "email": "lewishamilton@gmail.com", "image": "https://upload.wikimedia.org/wikipedia/commons/1/18/Lewis_Hamilton_2016_Malaysia_2.jpg" }, "categories": [ { "id": 2, "name": "Escola" } ] } ]
Este projeto foi desenvolvido por João Antônio durante o curso de Desenvolvimento de Software na Trybe