Skip to content

O Blogs API é um serviço que permite a criação, edição e remoção de artigos de um blog.

Notifications You must be signed in to change notification settings

Ikarosv/blogs-api

Repository files navigation

Blogs API

O Blogs API é um serviço que permite a criação, edição e remoção de artigos de um blog. Ela é acessível por meio de endpoints HTTP, que respondem com dados em formato JSON. Além disso, a API também oferece funcionalidades para o gerenciamento de usuários, que podem criar e editar artigos em nome próprio.

Os endpoints da API permitem a criação de novos artigos, a listagem de todos os artigos disponíveis, a edição e exclusão de artigos existentes, bem como a obtenção de detalhes de um artigo específico. Além disso, a API também permite a criação, edição e exclusão de usuários, bem como a autenticação de usuários por meio de tokens de acesso.

Pré-requisitos

Como iniciar o projeto

Com Docker Compose

  1. Clone o repositório.
  2. Abra um terminal na pasta raiz do projeto.
  3. Execute o seguinte comando para iniciar os containers do Docker:
docker-compose up -d

Este comando irá baixar e iniciar as imagens do Docker definidas no arquivo docker-compose.yml.

  1. Execute o seguinte comando para abrir o terminal do container blogs_api:
docker exec -it blogs_api bash
  1. Execute o comando a seguir para iniciar a aplicação:
npm run dev
  1. Abra um navegador e acesse a aplicação em http://localhost:3001.

Com npm

  1. Clone o repositório.
  2. Abra um terminal na pasta raiz do projeto.
  3. Execute o seguinte comando para instalar as dependências:
npm install

Este comando irá instalar as dependências definidas no arquivo package.json.

  1. Execute o seguinte comando para iniciar a aplicação:

obs: não se esqueça de criar o .env
npm run dev

Qualquer dúvida ou problema, consulte a documentação do Docker ou do npm.

Endpoints

POST /categories Cria uma nova categoria no blog. É necessário enviar no corpo da requisição o nome da categoria. Retorna a categoria criada, com o seu ID gerado automaticamente.
Exemplo de corpo de requisição
{
  "name": "Typescript"
}

☝️ Para acessar esta rota o token é obrigatório.

GET /categories Lista todas as categorias existentes no blog, com seus respectivos IDs e nomes.

☝️ Para acessar esta rota o token é obrigatório.

POST /login
Autentica um usuário no sistema. É necessário enviar no corpo da requisição os seguintes campos: `email` e `password`. Retorna um token de acesso válido por um determinado período de tempo.
Exemplo de corpo de requisição
{
"email": "ikaro@example.com",
"password": "123456"
}
POST /post Cria um novo artigo no blog. É necessário enviar no corpo da requisição os seguintes campos: `title`, `content` e `categoryIds` (Array de ID de categorias existentes). Retorna o artigo criado, com o seu ID gerado automaticamente.
Exemplo de corpo de requisição
{
  "title": "Latest updates, August 1st",
  "content": "The whole text for the blog post goes here in this key",
  "categoryIds": [1, 2]
}

☝️ Para acessar esta rota o token é obrigatório.

POST /user Cria um novo usuário no sistema. É necessário enviar no corpo da requisição os seguintes campos: `displayName`, `email`, `password` e, opcionalmente, `image`. Retorna um token gerado com as informações passada, exceto a senha.
Exemplo de corpo de requisição
{
  "displayName": "Ikaro Vieira",
  "email": "ikaro@example.com",
  "password": "123456",
  "image": "https://avatars.githubusercontent.com/u/89671522?v=4"
  // a imagem não é obrigatória
}
GET /user Lista todos os usuários existentes no sistema, com seus respectivos IDs, nomes, emails e imagens.

☝️ Para acessar esta rota o token é obrigatório.

GET /user/:id Obtém os detalhes de um usuário específico, identificado pelo seu ID. Retorna o ID, nome e email do usuário.

☝️ Para acessar esta rota o token é obrigatório.

Tecnologias Utilizadas

Backend

  • Express: Framework web para Node.js.
  • Joi: Biblioteca para validação de dados em JavaScript.
  • JSON Web Token: Padrão para autenticação em APIs.
  • MySQL2: Biblioteca para conexão com o banco de dados MySQL.
  • Sequelize: ORM para banco de dados em Node.js.

DevDependencies

  • ESLint Config Trybe Backend: Configurações do ESLint para projetos backend na Trybe.
  • Nodemon: Utilitário que reinicia automaticamente o servidor quando há alterações no código.
  • Sequelize CLI: Interface de linha de comando para o Sequelize.

Atualizações futuras

Pretendo adicionar endpoints para pegar todos os posts, para pegar pelo id ou slug, para atualizar algum post, par deletar um post, para deletar um usuário e para pesquisar um post.

About

O Blogs API é um serviço que permite a criação, edição e remoção de artigos de um blog.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published