{"id":27950688,"url":"https://github.com/rodrigo-kelven/simples_api_gateway","last_synced_at":"2025-05-07T16:15:24.672Z","repository":{"id":273448549,"uuid":"919750161","full_name":"Rodrigo-Kelven/Simples_API_Gateway","owner":"Rodrigo-Kelven","description":"Api gateway, repositorio onde mostro como funciona um api gateway de forma simples usando fastapi, python, docker. Ele desempenha um papel crucial na gestão e orquestração de chamadas de API, oferecendo uma série de funcionalidades que melhoram a eficiência e a segurança das comunicações","archived":false,"fork":false,"pushed_at":"2025-03-20T22:45:14.000Z","size":9489,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-07T16:15:21.132Z","etag":null,"topics":["docker","fastapi","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Rodrigo-Kelven.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-21T00:04:43.000Z","updated_at":"2025-04-13T01:28:35.000Z","dependencies_parsed_at":"2025-01-21T01:24:01.456Z","dependency_job_id":"db1f8193-c67f-4218-90a4-b1d9de5ccb5a","html_url":"https://github.com/Rodrigo-Kelven/Simples_API_Gateway","commit_stats":null,"previous_names":["rodrigo-kelven/simples_api_getway"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rodrigo-Kelven%2FSimples_API_Gateway","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rodrigo-Kelven%2FSimples_API_Gateway/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rodrigo-Kelven%2FSimples_API_Gateway/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rodrigo-Kelven%2FSimples_API_Gateway/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Rodrigo-Kelven","download_url":"https://codeload.github.com/Rodrigo-Kelven/Simples_API_Gateway/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252912964,"owners_count":21824066,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","fastapi","python3"],"created_at":"2025-05-07T16:15:24.028Z","updated_at":"2025-05-07T16:15:24.644Z","avatar_url":"https://github.com/Rodrigo-Kelven.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Simples API Gateway com FastAPI\n![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge\u0026logo=python\u0026logoColor=ffdd54) \n![FastAPI](https://img.shields.io/badge/FastAPI-%23FF4F00.svg?style=for-the-badge\u0026logo=fastapi\u0026logoColor=white)\n![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge\u0026logo=docker\u0026logoColor=white) \n\n\n***\"Construir um simples API Gateway com FastAPI é uma tarefa bastante direta. O FastAPI é um framework moderno e rápido para construir APIs com Python, e ele é ideal para criar um API Gateway devido à sua simplicidade e desempenho.\"***\n\n### Um API Gateway é um componente de software que atua como um ponto de entrada único para um conjunto de serviços de backend em uma arquitetura de microserviços. Ele desempenha um papel crucial na gestão e orquestração de chamadas de API, oferecendo uma série de funcionalidades que melhoram a eficiência e a segurança das comunicações entre clientes e serviços.\n## Principais Funções de um API Gateway:\n\n- Roteamento de Solicitações: O API Gateway direciona as solicitações dos clientes para os serviços apropriados, simplificando a comunicação.\n- Agregação de Respostas: Ele pode combinar respostas de múltiplos serviços em uma única resposta, reduzindo a quantidade de chamadas que o cliente precisa fazer.\n- Autenticação e Autorização: O API Gateway pode gerenciar a autenticação de usuários e a autorização de acesso a serviços, centralizando a segurança.- \n- Controle de Tráfego: Permite implementar políticas de limitação de taxa (rate limiting) e controle de acesso, ajudando a proteger os serviços contra abusos.\n- Monitoramento e Logging: Facilita o monitoramento do tráfego de API e a coleta de logs, permitindo uma melhor análise de desempenho e identificação de problemas.\n- Transformação de Dados: Pode modificar as solicitações e respostas, como converter formatos de dados ou adicionar cabeçalhos.\n\n## Vantagens do Uso de um API Gateway:\n\n- Simplicidade: Os clientes interagem com um único ponto de entrada, simplificando a arquitetura.\n- Segurança: Centraliza a segurança, reduzindo a superfície de ataque.\n- Desempenho: Pode melhorar o desempenho através de caching e otimização de chamadas.\n- Escalabilidade: Facilita a escalabilidade, permitindo que novos serviços sejam adicionados sem impactar os clientes.\n\n## Exemplos de Ferramentas de API Gateway:\n\n- Kong\n- AWS API Gateway\n- NGINX\n- Traefik\n- FastAPI (como mencionado anteriormente, pode ser usado para criar um API Gateway simples)\n\n\n## Instalação\n```bash\n  git clone https://github.com/Rodrigo-Kelven/Simples_API_Gateway\n  cd Simples_API_Gateway\n  docker-compose up --build\n```\n\n## Acesse as aplicações nos seguintes URLs:\n\n    Service A: http://localhost:8000/docs#/\n    Service B: http://localhost:8001/docs#/\n    Service C: http://localhost:8002/docs#/\n\n## Para testar a rota do API Gateway que chama o Service A, você pode acessar:\n\n    http://localhost:8080/service_a/items\n\n## Para testar a rota do API Gateway que chama o Service B, você pode acessar:\n\n    http://localhost:8080/service_b\n\n\n\n# Contribuições\nContribuições são bem-vindas! Se você tiver sugestões ou melhorias, sinta-se à vontade para abrir um issue ou enviar um pull request.;)\n\n## Autores\n- [@Rodrigo_Kelven](https://github.com/Rodrigo-Kelven)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frodrigo-kelven%2Fsimples_api_gateway","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frodrigo-kelven%2Fsimples_api_gateway","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frodrigo-kelven%2Fsimples_api_gateway/lists"}