Faaala Dev,
Este projeto é parte de um desafio prático para reforçar os conceitos aprendidos nos módulos da trilha Go. O objetivo é construir uma API RESTful que realiza operações CRUD in-memory, aplicando boas práticas de desenvolvimento e organização de código.
Este desafio é opcional e não possui correção oficial, mas é uma excelente oportunidade para praticar e consolidar conhecimentos. Lembre-se: tenha calma e acredite no seu processo. 💜
| Método | URL | Descrição | Status |
|---|---|---|---|
| POST | /api/users | Cria um usuário usando as informações enviadas no corpo da requisição. | ✔ Implementado |
| GET | /api/users | Retorna um array de usuários. | ✔ Implementado |
| GET | /api/users/:id | Retorna o objeto do usuário com o id especificado. | ✔ Implementado |
| DELETE | /api/users/:id | Remove o usuário com o id especificado e retorna o usuário deletado. | ✔ Implementado |
| PUT | /api/users/:id | Atualiza o usuário com o id especificado usando dados do corpo da requisição. Retorna o usuário modificado. | ✔ Implementado |
Cada recurso de usuário segue o seguinte esquema:
{
"id": "", // UUID, obrigatório
"first_name": "Jane Doe", // String, obrigatório (len >= 2 && len <= 20)
"last_name": "Jane Doe", // String, obrigatório (len >= 2 && len <= 20)
"biography": "Tendo diversão" // String, obrigatório (len >= 20 && len <= 450)
}Como ainda não cobrimos como lidar com bancos de dados em Go, este projeto utiliza um "banco de dados" em memória, implementado como um hash map, onde o id é a chave. As funções implementadas incluem:
- FindAll: Retorna a lista de usuários (ou array vazio).
- FindById: Retorna o usuário com o id especificado (ou
nullse o id não existir). - Insert: Adiciona um novo usuário e retorna o usuário recém-criado.
- Update: Atualiza um usuário existente e retorna o usuário atualizado (retorna erro caso o id não exista).
- Delete: Remove um usuário e retorna o usuário deletado.
- Regras:
- Se faltar alguma propriedade obrigatória (
first_name,last_nameoubiography):- Retorna
400 Bad Requestcom a mensagem:{"message": "Please provide FirstName LastName and bio for the user"}.
- Retorna
- Se os dados forem válidos:
- Salva o usuário no banco de dados.
- Retorna
201 Createdcom o usuário criado.
- Em caso de erro ao salvar:
- Retorna
500 Internal Server Errorcom a mensagem:{"message": "There was an error while saving the user to the database"}.
- Retorna
- Se faltar alguma propriedade obrigatória (
- Regras:
- Retorna todos os usuários cadastrados.
- Em caso de erro ao recuperar os dados:
- Retorna
500 Internal Server Errorcom a mensagem:{"message": "The users information could not be retrieved"}.
- Retorna
- Regras:
- Se o usuário com o id especificado não for encontrado:
- Retorna
404 Not Foundcom a mensagem:{"message": "The user with the specified ID does not exist"}.
- Retorna
- Em caso de erro ao recuperar os dados:
- Retorna
500 Internal Server Errorcom a mensagem:{"message": "The user information could not be retrieved"}.
- Retorna
- Se o usuário com o id especificado não for encontrado:
- Regras:
- Se o usuário com o id especificado não for encontrado:
- Retorna
404 Not Foundcom a mensagem:{"message": "The user with the specified ID does not exist"}.
- Retorna
- Em caso de erro ao remover o usuário:
- Retorna
500 Internal Server Errorcom a mensagem:{"message": "The user could not be removed"}.
- Retorna
- Se o usuário com o id especificado não for encontrado:
- Regras:
- Se o usuário com o id especificado não for encontrado:
- Retorna
404 Not Foundcom a mensagem:{"message": "The user with the specified ID does not exist"}.
- Retorna
- Se faltar alguma propriedade obrigatória (
first_name,last_nameoubiography):- Retorna
400 Bad Requestcom a mensagem:{"message": "Please provide name and bio for the user"}.
- Retorna
- Em caso de erro ao atualizar os dados:
- Retorna
500 Internal Server Errorcom a mensagem:{"message": "The user information could not be modified"}.
- Retorna
- Se os dados forem válidos:
- Atualiza o usuário no banco de dados.
- Retorna
200 OKcom o usuário atualizado.
- Se o usuário com o id especificado não for encontrado:
-
Clone o repositório: git clone https://github.com/seu-usuario/cadUserInGo.git
-
Inicie o servidor: go run main.go
-
Use ferramentas como Postman, Insomnia ou cURL para testar os endpoints.
Este projeto é uma excelente oportunidade para praticar o desenvolvimento de APIs RESTful em Go. À medida que os endpoints forem implementados, o progresso será atualizado na tabela acima. 🚀 ```