Skip to content

A Api foi construída no padrão RESTful. É um sistema para produção de conteudos para um blog post, feito com MySQL juntamente com Sequelize para a gerenciamento do banco dados.

Notifications You must be signed in to change notification settings

yuryss98/project-blogs-api

Repository files navigation

Boas vindas ao repositório do projeto blogs-api!


Neste projeto, desenvolvi uma API e um banco de dados para a produção de conteúdo para um blog!

A aplicação foi desenvolvida em Node.js usando o pacote sequelize para fazer um CRUD de posts;

A Api foi desenvolvida seguindo a arquitetura de software de camadas MSC (Model Service Controller);

Desenvolvi endpoints que estão conectados ao banco de dados seguindo os princípios do REST;

🛠 Tecnologias usadas:

  • JavaScript;
  • Docker;
  • Express;
  • Node;
  • Mysql;
  • Sequelize

Execute localmente (é preciso ter o docker instalado):

Clone o projeto

git clone git@github.com:yuryss98/project-blogs-api.git

Vá para o diretório do projeto:

cd project-blogs-api

Execute os seguintes comandos:

docker-compose up -d --build
docker exec -it blogs_api bash
npm install
npm run db
npm run start

Depois de executar todos os comandos, ja teremos uma aplicação rodando na porta 3000, e um banco de dados criado e populado, com isso estamos prontos para consumir os devidos endpoints!!

giff

Endpoints: todos os endpoints são acessiveis a partir da rota http://localhost:3000

POST /login

-- O método POST em /login quando executado com um email e senha corretos retorna um token, token esse que é usado para poder acessar outras rotas da api, aceita 2 campos, sendo eles:

-- email: campo do tipo texto, tem que ser um email no formato valido exemplo => "lewishamilton@gmail.com" - CAMPO OBRIGATORIO;

-- password: campo do tipo texto, tem que ser de no minimo 6 caracters exemplo => "123456" - CAMPO OBRIGATORIO;

EXEMPLO:

    {
      "email": "lewishamilton@gmail.com",
      "password": "123456"
    }
POST /user -- O método POST em /user é usado para criar um usuario, quando criado com sucesso retorna um token, token esse que é usado para poder acessar outras rotas da api, aceita 4 campos, sendo eles:
-- displayName: campo do tipo texto de no minimo 8 caracters - CAMPO OBRIGATORIO;

-- email: campo do tipo texto, tem que ser um email no formato valido => exemplo@exemplo.com - CAMPO OBRIGATORIO;

-- password: campo do tipo texto de no minimo 6 caracters - CAMPO OBRIGATORIO;

-- image: campo do tipo texto, aqui pode colocar a url de alguma imagem - CAMPO NÃO OBRIGATORIO;

EXEMPLO:

    {
      "displayName": "testando",
      "email": "teste@teste.com",
      "password": "123456"
    }

👉 ## A partir daqui, todos os endpoints necessitaram de ter um token no header da requisição com a chave "Authorization", então não esqueça de guarda-lo, lembrando que cada token gerado expira em no máximo 1 hora!!

GET /user -- O método GET em /user é usado para listar todos os usuarios da nossa aplicação;
GET /user/id -- O método GET em /user/id é usado para listar um usuario especifico, onde id é o id do usuario no banco de dados;
DELETE /user/me -- O método DELETE em /user/me é usado para deletar o próprio usuario que está logado no sistema atualmente;
GET /categories -- O método GET em /categories é usado para listar todas as categorias de posts em nossa aplicação;
POST /categories -- O método POST em /categories é usado para criar uma categoria, aceita 1 campo, sendo ele:
-- name: campo do tipo texto de no minimo 5 caracters - CAMPO OBRIGATORIO;

EXEMPLO:

    {
      "name": "nova categoria"
    }
GET /post -- O método GET em /post é usado listar todos os posts criados juntamente com suas categorias e o usuario que o criou;
GET /post/search -- O método GET em /post/search é usado listar todos os posts que contenham em title ou content a palavra pesquisada na query.

EXEMPLO:

http://localhost:3000/post/search?q=vamos que vamos
GET /post/id -- O método GET em /post/id é usado para listar um post especifico, onde id é o id do post no banco de dados;
POST /post -- O método POST em /post é usado para criar um post, aceita 3 campos, sendo eles:
-- title: campo do tipo texto de no minimo 1 caracters - CAMPO OBRIGATORIO;

-- content: campo do tipo texto de no minimo 1 caracters - CAMPO OBRIGATORIO;

-- categoryIds: campo do tipo array (lista) de no minimo 1 item e o item tem que ser do tipo numérico - CAMPO OBRIGATORIO;

EXEMPLO:

    {
      "title": "criando um post",
      "content": "post devidamente criado",
      "categoryIds": [1, 2]
    }
PUT /post/id -- O método PUT em /post/id é usado para atualizar um post especifico onde id é o seu id no banco de dados, aceita 2 campos, sendo eles:
-- title: campo do tipo texto de no minimo 1 caracters - CAMPO OBRIGATORIO;

-- content: campo do tipo texto de no minimo 1 caracters - CAMPO OBRIGATORIO;

EXEMPLO:

    {
      "title": "atualizando o post",
      "content": "post devidamente atualizado"
    }
DELETE /post/id -- O método DELETE em /post/id é usado para deletar um post especifico, onde id é o id do post no banco de dados. A aplicação só permiti a deleção de um blog post caso a pessoa seja dona dele;

About

A Api foi construída no padrão RESTful. É um sistema para produção de conteudos para um blog post, feito com MySQL juntamente com Sequelize para a gerenciamento do banco dados.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published