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.
- Tecnologias Utilizadas
- Arquitetura
- Como Rodar
- Endpoints da API
- Utilizando Postman
- Acompanhe Meu Trabalho
- ASP.NET Core 10
- Entity Framework Core
- PostgreSQL
- AutoMapper
- FluentValidation
- Docker
- Swagger
- Postman
- Render
A arquitetura da API é baseada em camadas. Abaixo estão as principais:
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.
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.
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.
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.
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.
O projeto inclui:
Dockerfile(construção da imagem).docker-compose.yml(API + PostgreSQL Local).
A API pode ser executada de diferentes maneiras dependendo do seu ambiente. Abaixo estão as três formas recomendadas:
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.
Para rodar a API dentro de containers Docker, basta seguir os passos:
- Baixe deste repositório somente o arquivo
docker-compose.yml. - Suba a API e o banco Postgres com Docker Compose executando o comando abaixo no PowerShell, no mesmo diretório do arquivo
docker-compose.ymlque você baixou:
docker compose up -dO 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.
- Acesse o Swagger para testar os endpoints:
http://localhost:8080/index.html
- .NET 10 SDK.
- Visual Studio 2026.
- PostgreSQL.
- Abra a solução
FoodHub.API.slnx. - Garanta que a connection string do appsettings.Development.json aponte para um banco local.
- Pressione F5 para rodar. Na primeira execução, o Entity Framework executará automaticamente todas as migrations, criando todo o banco de dados estruturado.
- Acesse o Swagger para testar os endpoints:
http://localhost:8080/index.html
Abaixo estão todos os endpoints disponíveis na API FoodHub, separados por recurso:
| 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 |
| 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 |
| 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 |
| 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 |
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.
- Abra o Postman.
- Clique em Import (canto superior esquerdo).
- Arraste e solte o arquivo
FoodHub.API.postman_collectionpara dentro do pop-up do Postman. - Clique em Continue → Import.
- 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
Abaixo estão as URLs conforme o ambiente que você deseja consumir. Altere em Environments > FoodHub.API Environment.
Use esta URL para importar e testar a API hospedada no Render:
https://foodhub-api-q7dx.onrender.com
Se você estiver rodando a API em um container Docker local, o Swagger ficará acessível através de:
http://localhost:8080/index.html
Quando você roda o projeto localmente, o Swagger fica disponível em:
http://localhost:8080/index.html
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
Me encontre em outras redes:
- Docker Hub: hub.docker.com/u/jonathanbarr0s
- LinkedIn: linkedin.com/in/jonathansbarros/