https://github.com/rodrigo-kelven/fastapi_graphql
Este projeto é uma API GraphQL simples construída com FastAPI e Strawberry, duas ferramentas poderosas do ecossistema Python. A API permite que os usuários consultem uma lista de itens, cada um contendo um ID, username, fullName, email, role, hashedPassword, disabled, verified, createdAt.
https://github.com/rodrigo-kelven/fastapi_graphql
docker fas graphql mon python3 redis sqlite
Last synced: 3 months ago
JSON representation
Este projeto é uma API GraphQL simples construída com FastAPI e Strawberry, duas ferramentas poderosas do ecossistema Python. A API permite que os usuários consultem uma lista de itens, cada um contendo um ID, username, fullName, email, role, hashedPassword, disabled, verified, createdAt.
- Host: GitHub
- URL: https://github.com/rodrigo-kelven/fastapi_graphql
- Owner: Rodrigo-Kelven
- Created: 2025-02-22T01:42:57.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-11T02:19:28.000Z (about 1 year ago)
- Last Synced: 2025-08-22T21:24:13.547Z (10 months ago)
- Topics: docker, fas, graphql, mon, python3, redis, sqlite
- Language: Python
- Homepage:
- Size: 24.4 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# FastAPI and GraphQL
## API GraphQL com FastAPI e Strawberry







Este projeto é uma API GraphQL simples construída com FastAPI e Strawberry, duas ferramentas poderosas do ecossistema Python. A API permite que os usuários consultem uma lista de itens, cada um contendo um ID, username, fullName, email, role, hashedPassword, disabled, verified, createdAt.
## Sobre GraphQL
O GraphQL é uma linguagem de consulta para APIs que oferece flexibilidade ao cliente, permitindo solicitar exatamente os dados necessários. Diferentemente do REST, onde múltiplas rotas são usadas para diferentes recursos, o GraphQL utiliza uma única rota que pode retornar diversos tipos de dados, otimizando a comunicação entre cliente e servidor.
## Sobre Strawberry
Strawberry é uma biblioteca de GraphQL para Python que utiliza anotações de tipo para criar APIs de maneira intuitiva e moderna. Ela se integra perfeitamente com o FastAPI, permitindo criar endpoints GraphQL com facilidade. O principal componente utilizado é o GraphQLRouter, que serve como ponto de entrada para as consultas GraphQL.
## Benefícios do Projeto
- Flexibilidade: Clientes podem consultar apenas os dados necessários, reduzindo o tráfego de rede.
- Simplicidade: Com Strawberry e FastAPI, a configuração da API é direta e eficiente.
- Escalabilidade: A estrutura GraphQL facilita a adição de novos tipos de dados sem alterar a lógica existente.
### Versão: 1.2.14
#### Para mais informações sobre:
* https://www.redhat.com/pt-br/topics/api/what-is-graphql
* https://graphql.org/learn/
## Tecnologias Utilizadas
- [FastAPI](https://fastapi.tiangolo.com/): Um framework moderno e rápido para construir APIs com Python.
- [Strawberry](https://strawberry.rocks/): Uma biblioteca para criar APIs GraphQL em Python.
- [Uvicorn](https://www.uvicorn.org/): Um servidor ASGI para rodar a aplicação.
## Pré-requisitos
Antes de começar, você precisa ter o Python 3.7 ou superior instalado em sua máquina. Você também deve ter o `pip` para instalar as dependências.
## Instalação
```bash
git clone https://github.com/Rodrigo-Kelven/FastAPI_GraphQL
cd FastAPI_GraphQL
pip install -r requirements.txt
```
## Usando via docker
```bash
docker build -t api_graphql .
docker run -p 8000:8000 api_graphql
```
### Usando a API
#### A API GraphQL pode ser acessada em http://127.0.0.1:8000/api/v1/graphql. Você pode usar a interface GraphQL para fazer consultas.
-h## Exemplo de Consulta
#### Para obter todos os itens, você pode usar a seguinte consulta:
```bash
{
allUsers {
id
username
fullName
email
role
hashedPassword
disabled
verified
createdAt
}
}
```
## Resposta Esperada
#### A resposta para a consulta acima será semelhante a:
```bash
{
"data": {
"allUsers": [
{
"id": "61476a49-6f68-4ba0-998f-07196de68abe",
"username": "string",
"fullName": "string",
"email": "user@example.com",
"role": "Role.admin",
"hashedPassword": "$2b$12$SjQvK5W9nE5UW9PnDsMRxOXqaKVG8.GRqtVIL/5ZeiAV33c5SV2M.",
"disabled": false,
"verified": 0,
"createdAt": "2025-03-10T02:22:27"
}
]
}
}
```
# Contribuições
Contribuições são bem-vindas! Se você tiver sugestões ou melhorias, sinta-se à vontade para abrir um issue ou enviar um pull request.;)
## Autores
- [@Rodrigo_Kelven](https://github.com/Rodrigo-Kelven)