https://github.com/lauratrigo/blog_api
Blog API é uma API criada com Node.js e Fastify para gerenciamento de posts de blog. Ela permite realizar operações de CRUD, incluindo criar, listar, comentar, curtir e excluir posts. O projeto foi desenvolvido para fins de estudo, praticando o desenvolvimento de APIs RESTful com essas tecnologias. 📚
https://github.com/lauratrigo/blog_api
api api-rest fastify javascript nodejs
Last synced: 4 months ago
JSON representation
Blog API é uma API criada com Node.js e Fastify para gerenciamento de posts de blog. Ela permite realizar operações de CRUD, incluindo criar, listar, comentar, curtir e excluir posts. O projeto foi desenvolvido para fins de estudo, praticando o desenvolvimento de APIs RESTful com essas tecnologias. 📚
- Host: GitHub
- URL: https://github.com/lauratrigo/blog_api
- Owner: lauratrigo
- License: mit
- Created: 2025-02-05T01:12:06.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-09T18:29:45.000Z (over 1 year ago)
- Last Synced: 2025-02-23T11:32:50.390Z (over 1 year ago)
- Topics: api, api-rest, fastify, javascript, nodejs
- Language: JavaScript
- Homepage:
- Size: 24.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 📝 Blog API
Esse é um projeto de **API de Blog** que desenvolvi para fins de estudo. O objetivo principal foi criar uma API simples e funcional utilizando **Fastify** e **Node.js**, permitindo operações de CRUD (criar, ler, atualizar e excluir) para posts de um blog, além de possibilitar comentários e curtidas.
## 🛠 Tecnologias Usadas
- **Node.js**
- **Fastify**
- **JavaScript**



## 💡 Objetivo
O objetivo deste projeto é implementar uma API RESTful simples que permita a criação e gerenciamento de posts, além de possibilitar que os usuários possam comentar, curtir e excluir posts, com um sistema básico de autenticação.
## 🚀 Funcionalidades
- **Listar posts**: Exibe todos os posts criados.
- **Criar post**: Cria um novo post informando o nome do usuário, o título e o conteúdo.
- **Comentar post**: Permite que os usuários comentem em posts existentes, com nome e conteúdo do comentário.
- **Curtir post**: Adiciona ou remove um like de um post.
- **Excluir post**: Exclui um post se o usuário for o dono do post.
## 📦 Como Rodar o Projeto
### Passo 1: Clonar o Repositório
Clone o repositório para sua máquina local:
```bash
git clone https://github.com/lauratrigo/Blog_API.git
cd Blog_API
```
### Passo 2: Instalar as Dependências
Instale as dependências do projeto utilizando o npm:
```bash
npm install
```
### Passo 3: Rodar o Servidor
Para rodar o servidor em modo de desenvolvimento, utilize o seguinte comando:
```bash
npm run dev
```
O servidor será iniciado e ficará monitorando alterações nos arquivos para reiniciar automaticamente.
## 🔧 Endpoints
### `GET /posts`
Retorna a lista de todos os posts.
**Resposta**:
- Status: `200 OK`
- Corpo: Array de posts.
### `POST /posts`
Cria um novo post.
**Corpo da Requisição**:
```json
{
"username": "Nome do Usuário",
"title": "Título do Post",
"content": "Conteúdo do Post"
}
```
**Resposta**:
- Status: `201 Created`
- Corpo: Objeto do novo post.
### `POST /posts/:id/comment`
Adiciona um comentário a um post.
**Parâmetro**:
- id: ID do post.
**Corpo da Requisição**:
```json
{
"username": "Nome do Usuário",
"content": "Conteúdo do Comentário"
}
```
**Resposta**:
- Status: `201 Created`
- Corpo: Objeto do post com o novo comentário.
### `PATCH /posts/:id/like`
Dá ou remove um like de um post.
**Parâmetro**:
- id: ID do post.
**Corpo da Requisição**:
```json
{
"username": "Nome do Usuário"
}
```
**Resposta**:
- Status: `200 OK`
- Corpo: Objeto do post atualizado com a lista de likes.
### `DELETE /posts/:id`
Exclui um post.
**Parâmetro**:
- id: ID do post.
**Corpo da Requisição**:
```json
{
"username": "Nome do Usuário"
}
```
**Resposta**:
- Status: `204 No Content`
- Corpo: Nenhum.
## 📂 Estrutura do Projeto
```
blog-api/
├── src/
│ ├── middlewares/
│ │ └── is-auth.js # Middleware de autenticação
│ ├── routes/
│ │ └── posts.js # Rotas dos posts
│ └── server.js # Configuração do servidor Fastify
├── node_modules/ # Dependências do projeto
├── package.json # Dependências e scripts
└── package-lock.json # Lock de versões
```
## 🤝 Agradecimentos
Este projeto foi criado com base em um vídeo do YouTube, onde pude aprender as práticas de criação de uma API com **Fastify**. O objetivo principal foi praticar o uso de **Node.js** e **Fastify** em uma API RESTful.
Caso deseje contribuir, fique à vontade! Para sugestões e melhorias, você pode fazer um fork do repositório, criar uma branch com suas mudanças e enviar um pull request.
## 📜 Licença
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para mais detalhes.
## 🎥 Créditos
Este projeto foi desenvolvido por Laura Trigo com base no vídeo [como criar uma API com Fastify e Node.js](https://www.youtube.com/watch?v=-zva6JKOWB8&list=PLdP0_O7ZLFU1ze1Lkg1aE8AilZ-_B2JOG&index=4).