Skip to content

Arthur-Fialho/API-VehicleRegistry

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

API de Registo de Veículos - ASP.NET Core Minimal API

C# .NET PostgreSQL xUnit

Status: Concluído ✅

Uma API RESTful moderna construída com C# e ASP.NET Core Minimal APIs para gerir o registo de veículos. A aplicação implementa um sistema de autenticação seguro com JWT e autorização baseada em perfis (Roles) para controlar o acesso às operações de CRUD.

Este projeto foi desenvolvido para demonstrar competências no ecossistema .NET, incluindo acesso a dados com Entity Framework Core, implementação de segurança e escrita de testes automatizados.


Tabela de Conteúdos

  1. Funcionalidades Principais
  2. Tecnologias Utilizadas
  3. Como Executar Localmente
  4. Documentação dos Endpoints
  5. Testes

✨ Funcionalidades Principais

  • Arquitetura Minimal API: Endpoints construídos de forma concisa e performática, utilizando a abordagem mais recente do ASP.NET Core.
  • Persistência com Entity Framework Core: Abordagem "Code-First", onde o esquema da base de dados é gerado e gerido através de Migrations a partir das classes de modelo C#.
  • Autenticação com JWT: Sistema de login que gera um JSON Web Token (JWT) para autenticar requisições subsequentes.
  • Autorização Baseada em Perfis (Roles): Controlo de acesso granular.
    • Editor: Pode criar e ler veículos.
    • Administrador: Tem acesso total, incluindo atualizar e apagar veículos.
  • Testes Automatizados: Cobertura de testes de unidade e de persistência para a camada de serviço, utilizando xUnit, Moq e uma base de dados em memória.
  • Documentação Interativa: Geração automática de uma UI do Swagger para visualização e teste dos endpoints.

🛠️ Tecnologias Utilizadas

Categoria Tecnologia
Framework & Core .NET 9, ASP.NET Core
Persistência de Dados Entity Framework Core, Npgsql (Provider PostgreSQL)
Segurança Microsoft.AspNetCore.Authentication.JwtBearer
Testes xUnit, Moq, EF Core In-Memory Database
API & Documentação Minimal APIs, Swashbuckle (Swagger)
Hashing de Senhas BCrypt.Net-Next

⚙️ Como Executar Localmente

Pré-requisitos

Passos

  1. Clone o repositório:

    git clone https://github.com/Arthur-Fialho/API-VehicleRegistry
    cd VehicleRegistryAPI
  2. Configure a Base de Dados:

    • Crie uma base de dados no PostgreSQL chamada vehicleregistry.
    • No ficheiro appsettings.json, atualize a DefaultConnection com as suas credenciais do PostgreSQL e defina um segredo forte para o JWT:
      {
        "ConnectionStrings": {
          "DefaultConnection": "Host=localhost;Port=5432;Database=vehicleregistry;Username=<seu-usuario>;Password=<sua-senha>"
        },
        "Jwt": {
          "Key": "<SEU_SEGREDO_SUPER_SECRETO_GERADO_AQUI>"
        }
      }
  3. Aplique as Migrations: Este comando irá criar as tabelas Vehicles e Users na sua base de dados.

    dotnet ef database update
  4. Execute o projeto:

    dotnet run

    A API estará disponível num endereço local (ex: http://localhost:5167). A UI do Swagger estará disponível em /swagger.


📖 Documentação dos Endpoints

Todos os endpoints, exceto /login, são protegidos e exigem um token JWT no cabeçalho Authorization: Bearer <seu-token>.

Clique para expandir a documentação da API

Autenticação

  • POST /login
    • Realiza o login e retorna um token JWT. Utilizadores padrão são criados na primeira inicialização (editor/senha123 e admin/senhaforte).

Veículos

  • GET /vehicles: Lista todos os veículos. (Requer Editor ou Administrator)
  • GET /vehicles/{id}: Busca um veículo por ID. (Requer Editor ou Administrator)
  • POST /vehicles: Cria um novo veículo. (Requer Editor ou Administrator)
  • PUT /vehicles/{id}: Atualiza um veículo. (Requer Administrator)
  • DELETE /vehicles/{id}: Deleta um veículo. (Requer Administrator)

Exemplo de corpo para POST ou PUT de Veículo:

{
  "make": "Toyota",
  "model": "Corolla",
  "year": 2025,
  "licensePlate": "BRA2E19"
}

✅ Testes

A solução inclui um projeto dedicado (VehicleRegistryAPI.Tests) com testes de unidade e persistência.

Para executar todos os testes a partir da raiz da solução, use o comando:

dotnet test

Você deverá ver uma saída a indicar que todos os testes passaram com sucesso.


Autor

Arthur Fialho

About

Uma API RESTful moderna construída com C# e ASP.NET Core Minimal APIs para gerir o registo de veículos. A aplicação implementa um sistema de autenticação seguro com JWT e autorização baseada em perfis (Roles) para controlar o acesso às operações de CRUD.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages