GraphQL est une alternative à REST pour le développement des API. Il permet une flexibilité accrue en permettant aux clients de spécifier exactement ce dont ils ont besoin, de réduire la quantité de données transférées par le réseau et d’améliorer la productivité du développeur.
Pour mettre en œuvre l’API GraphQL avec Django, nous devrons d’abord installer certains paquets supplémentaires. Le paquet principal dont nous aurons besoin est Graphene, une bibliothèque Python pour construire des API GraphQL dans un style Django et Relay. Nous devrons également installer le paquet Django Filter pour ajouter le support des requêtes de filtrage. Vous pouvez installer ces paquets avec pip :
```
pip install graphene-django
pip install django-filter
```
Après l’installation, vous devrez ajouter ‘graphene_django’ à la liste INSTALLED_APPS dans vos settings.py :
```
INSTALLED_APPS = [
…
‘django.contrib.staticfiles’,
…
‘graphene_django’,
]
```
et également ajouter l’URL pour GraphQL à votre urls.py :
urlpatterns = [
…
path(‘graphql/’, GraphQLView.as\_view(graphiql=True)),
…
]
```
Le prochain pas consiste à définir vos schemas GraphQL. Chaque modèle Django que vous voulez exposer via GraphQL nécessite un Type correspondant dans le schema. Vous pouvez créer ces types en utilisant le ObjectType de Graphene :
```
import graphene
from graphene\_django.types import DjangoObjectType
from .models import MyModel
class MyModelType(DjangoObjectType):
class Meta:
model = MyModel
```
Ensuite vous pouvez définir un schema global pour votre API en définissant une Query et, si besoin, une Mutation. La Query vous permet de définir les requêtes GET pour votre API, et la Mutation les requêtes POST, PUT et DELETE.
L’extrait de code suivant montre une Query simple pour obtenir les détails d’un élément de MyModel en utilisant son ID :
```
class Query(graphene.ObjectType):
mymodel = graphene.Field(MyModelType, id=graphene.Int())
Ensuite, vous définissez votre schema global dans schemas.py:
```
schema = graphene.Schema(query=Query)
```
Et ajoutez-le à vos settings.py:
```
GRAPHENE = {
‘SCHEMA’: ‘myapp.schemas.schema‘
}
\`\`\`
Et voilà, vous avez maintenant une API GraphQL fonctionnelle avec Django.
Références :
1. Graphene-Django documentation: https://docs.graphene-python.org/projects/django/en/latest/
2. Official Django documentation: https://docs.djangoproject.com/
3. Blog article “How to use GraphQL with Django”: https://www.valentinog.com/blog/drf/