Esta API foi desenvolvida com o objetivo de fornecer um catálogo de produtos, armazenados por categorias. Construída usando .NET e C#, ela permite extrair os produtos da base de dados e integrar as diversas aplicações existentes no negócio, .
- Linguagem: C#
- Framework: ASP.NET Core 6
- Banco de Dados: SQL Server
- Autenticação: JWT (JSON Web Token)
- ORM: Entity Framework Core
-
Clone o Repositório
git clone https://github.com/usuario/repositorio.git cd repositorio
-
Configure o Banco de Dados
- Atualize a string de conexão no arquivo
appsettings.json
:"ConnectionStrings": { "DefaultConnection": "Server=localhost;Database=MinhaApiDb;User Id=usuario;Password=senha;" }
- Atualize a string de conexão no arquivo
-
Restaurar Pacotes NuGet
dotnet restore
-
Aplicar Migrações
dotnet ef database update
-
Rodar a Aplicação
dotnet run
A API utiliza JWT para autenticação. Para acessar os endpoints protegidos, é necessário incluir o token JWT no cabeçalho das requisições.
Exemplo de Autenticação:
POST /api/auth/login HTTP/1.1
Host: api.exemplo.com
Content-Type: application/json
{
"username": "usuario",
"password": "senha"
}
Resposta:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
Método | Endpoint | Descrição | Autenticação |
---|---|---|---|
GET | /api/catalogos |
Retorna a lista de todos os produtos | Não |
GET | /api/catalogos/{id} |
Retorna um produto específico pelo ID | Não |
POST | /api/catalogos |
Cria um novo produto | 🔒 Sim |
PUT | /api/catalogos/{id} |
Atualiza os dados de um produto específico | 🔒 Sim |
DELETE | /api/catalogos/{id} |
Remove um produto específico | 🔒 Sim |
Método | Endpoint | Descrição | Autenticação |
---|---|---|---|
GET | /api/produtos |
Retorna a lista de todos os produtos | Não |
GET | /api/produtos/{id} |
Retorna um produto específico pelo ID | Não |
POST | /api/produtos |
Cria um novo produto | 🔒 Sim |
PUT | /api/produtos/{id} |
Atualiza os dados de um produto específico | 🔒 Sim |
DELETE | /api/produtos/{id} |
Remove um produto específico | 🔒 Sim |
- GET
/api/catalogos
:- Retorna a lista de todos os catálogos disponíveis.
- Resposta de Sucesso:
{ "id": 10, "nome": "Periféricos", "descricao": "Dispositivos que complementam o funcionamento de um computador.", "produtos": [ { "id": 101, "nome": "Teclado Mecânico RGB", "descricao": "Teclado mecânico com iluminação RGB e switches Blue.", "preco": 299.99, "estoque": 50, "dataCriacao": "2024-08-29T12:34:56Z", "dataAtualizacao": "2024-08-29T12:34:56Z" },
- GET
/api/produtos
:- Retorna a lista de todos os produtos disponíveis.
- Resposta de Sucesso:
GET /api/produtos/{id}
GET /api/produtos/{id} HTTP/1.1
Host: api.exemplo.com
Authorization: Bearer {seu-token-aqui}
Resposta de Sucesso:
{
"data": [
{
"id": 101,
"nome": "Teclado Mecânico RGB",
"descricao": "Teclado mecânico com iluminação RGB.",
"preco": 299.99,
"estoque": 50,
"categoria": "Periféricos"
},
Erros Comuns:
401 Unauthorized
: Token inválido ou não fornecido.404 Not Found
: Recurso não encontrado.
Use o diagrama abaixo para entender como os recursos da API interagem:
Usuário -> [POST /api/auth/login] -> Token JWT
Token JWT -> [GET /api/usuarios] -> Dados dos Usuários
- Mantenha o token JWT seguro: Armazene o token em um local seguro e nunca o exponha no front-end.
- Tratamento de erros: Sempre verifique os códigos de status HTTP e trate-os de forma adequada no seu cliente.
Abaixo estão capturas de tela dos endpoints mais importantes acessados através do Swagger:
Contribuições são bem-vindas! Para começar:
- Crie um fork do projeto
- Crie um branch para a sua feature (
git checkout -b minha-feature
) - Faça commit das suas mudanças (
git commit -m 'Adiciona nova feature'
) - Envie o código para o branch (
git push origin minha-feature
) - Abra um Pull Request
Este projeto foi desenvolvido por mim, Priscila Leite, para compor meu acervo de projetos com C# e .Net