Uma API RESTful para gestão de conteúdo com autenticação JWT, permitindo gerenciar usuários, categorias e artigos.
- Node.js (versão 14 ou superior)
- npm ou yarn
- Clone o repositório
- Instale as dependências:
npm install
- Inicie o servidor de desenvolvimento:
npm run dev
O servidor estará rodando em http://localhost:3000
A API utiliza autenticação JWT (JSON Web Token). Para acessar endpoints protegidos:
- Faça login através do endpoint
/auth/login - Use o token retornado no header
Authorization: Bearer <token>
Exemplo de login:
POST /auth/login
{
"nome": "Usuario",
"email": "[email protected]"
}POST /auth/login: Login do usuário (retorna token JWT)
POST /usuarios: Criar usuário (público){ "nome": "Usuario", "email": "[email protected]" }GET /usuarios: Listar usuários (com filtros opcionais)- Query params:
nome,email
- Query params:
GET /usuarios/:id: Buscar usuário por IDPUT /usuarios/:id: Atualizar usuárioDELETE /usuarios/:id: Excluir usuário
POST /categorias: Criar categoria{ "nome": "Tecnologia", "descricao": "Artigos sobre tecnologia" }GET /categorias: Listar categorias- Query params:
nome
- Query params:
GET /categorias/:id: Buscar categoria por IDPUT /categorias/:id: Atualizar categoriaDELETE /categorias/:id: Excluir categoria
POST /artigos: Criar artigo{ "titulo": "Introdução aos Testes Automatizados", "conteudo": "Exemplos de ferramentas de testes automatizados...", "nomeAutor": "Usuario", "nomeCategoria": "Tecnologia", "dataPublicacao": "2024-03-21T10:00:00Z" }GET /artigos: Listar artigos (com paginação e filtros)- Query params:
categoriaId: UUID da categoriaautorId: UUID do autorpage: Número da página (default: 1)limit: Itens por página (default: 10)
- Query params:
GET /artigos/:id: Buscar artigo por IDPUT /artigos/:id: Atualizar artigoDELETE /artigos/:id: Excluir artigo
id: UUID (automático)nome: string (obrigatório)email: string (obrigatório, único)dataCriacao: datetime (automático)artigos: array de Artigos
id: UUID (automático)nome: string (obrigatório, único)descricao: string (opcional)dataCriacao: datetime (automático)artigos: array de Artigos
id: UUID (automático)titulo: string (obrigatório, máx 100 caracteres)conteudo: texto (obrigatório)autorId: UUID (obrigatório, referência User)categoriaId: UUID (obrigatório, referência Category)dataPublicacao: datetimedataCriacao: datetime (automático)autor: objeto Usercategoria: objeto Category
- Todos os endpoints (exceto criação de usuário e login) requerem autenticação JWT
- Não é possível excluir um usuário que possui artigos vinculados
- Não é possível excluir uma categoria que possui artigos vinculados
- Email do usuário deve ser único
- Nome da categoria deve ser único
- Título do artigo deve ter no máximo 100 caracteres
- Ao criar um artigo, o autor e a categoria são referenciados por nome
A API retorna erros no seguinte formato:
{
"erro": "Mensagem principal do erro",
"errors": [
{
"msg": "Detalhamento do erro",
"param": "Campo relacionado",
"location": "Localização do erro"
}
]
}📧 Email: [email protected]