Este projeto é uma API RESTful construída com ASP.NET Core, que gerencia um conjunto simples de produtos. A API permite realizar operações CRUD (Criar, Ler, Atualizar, Excluir) em uma lista de produtos, e utiliza exceções personalizadas para tratar erros específicos. O projeto serve como uma base para aprender a implementar controladores, manipulação de exceções e validações de modelo.
GET /api/products
Retorna todos os produtos.
[
{ "id": 1, "name": "Product 1", "price": 100 },
{ "id": 2, "name": "Product 2", "price": 200 },
{ "id": 3, "name": "Product 3", "price": 300 }
]
```markdown
# ProductClienthub API
Este projeto é uma API RESTful construída com **ASP.NET Core**, que gerencia um conjunto simples de produtos. A API permite realizar operações CRUD (Criar, Ler, Atualizar, Excluir) em uma lista de produtos, e utiliza exceções personalizadas para tratar erros específicos. O projeto serve como uma base para aprender a implementar controladores, manipulação de exceções e validações de modelo.
## Funcionalidades
- **Listar Produtos:** Retorna todos os produtos cadastrados.
- **Buscar Produto por ID:** Recupera um produto específico através de seu ID.
- **Criar Produto:** Adiciona um novo produto à lista de produtos.
- **Atualizar Produto:** Atualiza os dados de um produto existente.
- **Excluir Produto:** Remove um produto da lista.
## Tecnologias Utilizadas
- **ASP.NET Core** para a construção da API.
- **Exceções Personalizadas** para tratamento de erros específicos de produto.
- **Validação de Modelo** para garantir a integridade dos dados de entrada.
## Endpoints
### 1. `GET /api/products`
Retorna todos os produtos.
#### Exemplo de Resposta:
```json
[
{ "id": 1, "name": "Product 1", "price": 100 },
{ "id": 2, "name": "Product 2", "price": 200 },
{ "id": 3, "name": "Product 3", "price": 300 }
]
GET /api/products/{id}
Retorna um produto específico baseado no ID fornecido.
{ "id": 1, "name": "Product 1", "price": 100 }
Status HTTP: 404 (Not Found)
POST /api/products
Cria um novo produto.
{
"name": "New Product",
"price": 150
}
Status HTTP: 201 (Created)
{ "id": 4, "name": "New Product", "price": 150 }
PUT /api/products/{id}
Atualiza um produto existente.
{
"name": "Updated Product",
"price": 250
}
Status HTTP: 204 (No Content)
DELETE /api/products/{id}
Exclui um produto existente.
Status HTTP: 204 (No Content)
O projeto implementa uma exceção personalizada chamada ProductNotFoundException
que é lançada quando um produto não é encontrado nas operações de busca, atualização ou exclusão. A exceção retorna um código de status 404 e uma mensagem de erro indicando que o produto não foi encontrado.
Exemplo de exceção:
{
"error": "Produto com ID 1 não encontrado"
}
Antes de criar ou atualizar um produto, a API valida os dados recebidos. Caso o modelo enviado não seja válido (por exemplo, se algum campo obrigatório estiver ausente ou mal formatado), a resposta será um código de status 400 com os detalhes dos erros de validação.
Exemplo de erro de validação:
{
"errors": {
"Name": ["The Name field is required."]
}
}
git clone https://github.com/Romeropedro1/ProductClienthub.git
dotnet restore
dotnet run
http://localhost:5000
.Sinta-se à vontade para contribuir com melhorias, correções de bugs ou novas funcionalidades. Para isso, basta fazer um fork do repositório, criar uma branch com a sua mudança e enviar um pull request.
Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para mais detalhes.
Este é um exemplo simples de uma API para gerenciar produtos, mas pode ser expandido com novas funcionalidades, como autenticação, banco de dados real e testes automatizados, conforme necessário. ```