User Tools

Site Tools


tanszek:oktatas:informacios_rendszerek_integralasa:graphql_integracio

GraphQL integráció

REST API GraphQL
Adatlekérdezés rugalmassága Fix végpontok és válaszok Rugalmas lekérdezések, csak a szükséges adatokat kapod meg
Kliens teljesítmény Többszöri kérések szükségesek különböző erőforrásokhoz Egyetlen kérésben több adatforrásból is lekérhetők az adatok
Adatok Több lekérdezésre lehet szükség összetett adatokhoz Egyetlen kérésben lekérdezhető minden szükséges adat
Hálózati hatékonyság Többszöri kérés esetén megnő a hálózati forgalom Csökkenti a felesleges adatátvitelt és lekérdezések számát
Használhatóság Egyszerű, széles körben ismert Nehezebben elsajátítható, de hatékonyabb
Gyorsítótárazás (Caching) HTTP cache és CDN támogatott Nehezebb megvalósítani, egyedi cache stratégia szükséges
Verziókezelés API verziózás szükséges (pl. `/v1/users`) Nincs szükség verziókezelésre, mert a kliens választja ki a szükséges mezőket
Adatstruktúra változás kezelése Módosítások új végpontok létrehozását igényelhetik Az új mezők bevezethetők a régiek megtartásával
Biztonság és hozzáférés-kezelés Beépített HTTP biztonság, szerepkörök Finomhangolt hozzáférési szabályok szükségesek (pl. mezőszintű jogosultságok)
Támogatott formátumok Általában JSON (de támogat másokat is) JSON alapú (szigorúan GraphQL schema szerint)
Alkalmazási körök Egyszerű CRUD API-khoz ideális Összetett, dinamikus kliensigényekhez jobb választás

Python virtuális környezet kialakítás után az alábbi sorral telepíthetjük a függőségeket:

pip install fastapi strawberry-graphql uvicorn

Mintapélda az első használathoz:

import strawberry
from fastapi import FastAPI
from strawberry.fastapi import GraphQLRouter

# User adatmodell
@strawberry.type
class User:
    id: int
    name: str
    age: int

# Példa adatbázis
users = [
    User(id=1, name="Noa", age=30),
    User(id=2, name="Anna", age=25),
]

# GraphQL Query osztály
@strawberry.type
class Query:
    @strawberry.field
    def get_users(self) -> list[User]:
        return users

# GraphQL Mutáció osztály (új felhasználó hozzáadása)
@strawberry.type
class Mutation:
    @strawberry.mutation
    def create_user(self, name: str, age: int) -> User:
        new_user = User(id=len(users) + 1, name=name, age=age)
        users.append(new_user)
        return new_user

# GraphQL séma létrehozása
schema = strawberry.Schema(query=Query, mutation=Mutation)

# FastAPI alkalmazás létrehozása
app = FastAPI()

# GraphQL endpoint regisztrálása
graphql_app = GraphQLRouter(schema)
app.include_router(graphql_app, prefix="/graphql")

uvicorn.exe main:app --reload

A GraphQL Playground a következő URL-en elérhető lesz: 👉 http://127.0.0.1:8000/graphql

tanszek/oktatas/informacios_rendszerek_integralasa/graphql_integracio.txt · Last modified: 2025/02/22 16:29 by knehez