Skip to content

JonathanBarr0s/FoodHub.API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 

Repository files navigation

.NET API Status Docker Swagger Environment

FoodHub.API

Descrição Geral

A FoodHub API é uma aplicação desenvolvida em ASP.NET Core, projetada para gerenciar restaurantes, pratos e pedidos. Ela fornece endpoints para criação, consulta e atualização de dados.

🐳 Docker Image: https://hub.docker.com/r/jonathanbarr0s/food-hub-api

🔗 Acesse a API: https://foodhub-api-q7dx.onrender.com

Nota: Esta API pode levar até 50 segundos para inicializar na primeira requisição. Isso ocorre porque ela está hospedada no plano gratuito do Render, que hiberna a aplicação quando fica inativa.


Sumário


1. Tecnologias Utilizadas

  • ASP.NET Core 10
  • Entity Framework Core
  • PostgreSQL
  • AutoMapper
  • FluentValidation
  • Docker
  • Swagger
  • Postman
  • Render

2. Arquitetura

A arquitetura da API é baseada em camadas. Abaixo estão as principais:

2.1 Services

Na pasta Services/, ficam as regras de negócio da API. Eles garantem:

  • Regras e validações além do básico.
  • Orquestração entre repositórios.
  • Consistência dos dados.
  • Evitar duplicar lógica entre controllers.

2.2 Domain

Na pasta Domain/, ficam as entidades de negócio como User, Restaurant, Dish, Order e OrderItem. Elas representam exatamente como os dados existem e se relacionam no banco.

2.3 DTOs

Na pasta Dtos/, cada fluxo (criação, atualização, detalhe, listagem) possui seu próprio DTO para evitar vazamento de dados do domínio e aumentar a segurança da API.

2.4 AutoMapper

A pasta Mappings/ contém o perfil do AutoMapper para lidar com a conversão entre entidades e DTOs, removendo código repetitivo e facilitando a evolução das entidades.

2.5 Validações (FluentValidation)

Localizados em Services/Validators/, validam todas as entradas:

  • Verificação de regras.
  • Garantia de consistência dos dados antes de chegar ao banco.
  • Prevenção de erros de negócio.

2.6 Docker

O projeto inclui:

  • Dockerfile (construção da imagem).
  • docker-compose.yml (API + PostgreSQL Local).

3. Como Rodar

A API pode ser executada de diferentes maneiras dependendo do seu ambiente. Abaixo estão as três formas recomendadas:

3.1 Render (online, já hospedado)

A maneira mais simples é acessar a API diretamente no ambiente publicado:

🔗 API rodando no Render: https://foodhub-api-q7dx.onrender.com

Não é necessário instalar nada, o Swagger já estará disponível para testes imediatamente após acessar o link.

Nota: Esta API pode levar até 50 segundos para inicializar na primeira requisição. Isso ocorre porque ela está hospedada no plano gratuito do Render, que hiberna a aplicação quando fica inativa.

3.2 Rodar com Docker (localmente)

Para rodar a API dentro de containers Docker, basta seguir os passos:

  1. Baixe deste repositório somente o arquivo docker-compose.yml.
  2. Suba a API e o banco Postgres com Docker Compose executando o comando abaixo no PowerShell, no mesmo diretório do arquivo docker-compose.yml que você baixou:
docker compose up -d

O Compose irá:

  • Baixar a imagem da API do Docker Hub.
  • Criar o container do Postgres.
  • Subir os dois containers conectados em uma rede interna.
  • Aplicar automaticamente as migrations do banco.
  1. Acesse o Swagger para testar os endpoints:

http://localhost:8080/index.html

Nota: não é necessário ter Visual Studio ou PostgreSQL local instalado.

3.3 Rodar via Visual Studio (modo desenvolvedor)

Pré-requisitos recomendados

  • .NET 10 SDK.
  • Visual Studio 2026.
  • PostgreSQL.

Passo a passo

  1. Abra a solução FoodHub.API.slnx.
  2. Garanta que a connection string do appsettings.Development.json aponte para um banco local.
  3. Pressione F5 para rodar. Na primeira execução, o Entity Framework executará automaticamente todas as migrations, criando todo o banco de dados estruturado.
  4. Acesse o Swagger para testar os endpoints:

http://localhost:8080/index.html


4. Endpoints da API

Abaixo estão todos os endpoints disponíveis na API FoodHub, separados por recurso:

4.1 Usuários (UserController)

Método Rota Descrição
GET /User Retorna todos os usuários
GET /User/{id} Retorna um usuário pelo ID
POST /User Cria um novo usuário
PUT /User/{id} Atualiza um usuário existente
DELETE /User/{id} Exclui um usuário

4.2 Restaurantes (RestaurantController)

Método Rota Descrição
GET /Restaurant Retorna todos os restaurantes
GET /Restaurant/{id} Retorna um restaurante pelo ID
POST /Restaurant Cria um restaurante
PUT /Restaurant/{id} Atualiza um restaurante
DELETE /Restaurant/{id} Exclui um restaurante

4.3 Pratos (DishController)

Método Rota Descrição
GET /Dish Lista todos os pratos
GET /Dish/{id} Detalhes de um prato
POST /Dish Cria um novo prato
PUT /Dish/{id} Atualiza um prato
DELETE /Dish/{id} Remove um prato

4.4 Pedidos (OrderController)

Método Rota Descrição
GET /Order Retorna todos os pedidos com detalhes
GET /Order/{id} Retorna um pedido específico
POST /Order Cria um novo pedido
PUT /Order/{id} Adiciona itens a um pedido existente
DELETE /Order/{id} Exclui um pedido

5. Utilizando Postman

Você pode testar todos os endpoints da API utilizando o Postman, importando dois arquivos na pasta /Postman/ deste repositório, sendo:

FoodHub.API.postman_collection → contém todos os endpoints organizados por recursos.

FoodHub.API Environment.postman_environment → armazena as variáveis de ambiente.

5.1 Como importar a coleção no Postman

  1. Abra o Postman.
  2. Clique em Import (canto superior esquerdo).
  3. Arraste e solte o arquivo FoodHub.API.postman_collection para dentro do pop-up do Postman.
  4. Clique em ContinueImport.
  5. Faça o mesmo processo para FoodHub.API Environment.postman_environment.

O Postman irá gerar automaticamente:

  • Todas as rotas organizadas por pastas (Users, Restaurants, Dishes, Orders)
  • Todos os métodos (GET, POST, PUT, DELETE)
  • Corpo das requisições (JSON) prontos para uso

5.2 URLs para importar a API

Abaixo estão as URLs conforme o ambiente que você deseja consumir. Altere em Environments > FoodHub.API Environment.

5.2.1 Render

Use esta URL para importar e testar a API hospedada no Render:

https://foodhub-api-q7dx.onrender.com

5.2.2 Via Docker

Se você estiver rodando a API em um container Docker local, o Swagger ficará acessível através de:

http://localhost:8080/index.html

5.2.3 Localmente via Visual Studio

Quando você roda o projeto localmente, o Swagger fica disponível em:

http://localhost:8080/index.html

5.3 Testando as rotas

Após importar a coleção, basta:

  • Selecionar o método desejado
  • Alterar o JSON no corpo da requisição (somente quando necessário)
  • Clicar em Send

6. Acompanhe Meu Trabalho

Me encontre em outras redes:

About

Este projeto é uma aplicação desenvolvida em ASP.NET Core, projetada para gerenciar restaurantes, pratos e pedidos. Atualmente, a API está disponível no Render, executando dentro de um container Docker.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors