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.
- Clone o repositório.
- Abra um terminal na pasta raiz do projeto.
- 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
.
- Execute o seguinte comando para abrir o terminal do container blogs_api:
docker exec -it blogs_api bash
- Execute o comando a seguir para iniciar a aplicação:
npm run dev
- Abra um navegador e acesse a aplicação em http://localhost:3001.
- Clone o repositório.
- Abra um terminal na pasta raiz do projeto.
- Execute o seguinte comando para instalar as dependências:
npm install
Este comando irá instalar as dependências definidas no arquivo package.json
.
- 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.
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.
- 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.
- 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.
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.