DRF-QueryLang
1 semaine - Septembre 2025 Brest

DRF Query Lang est une librairie open-source pour Django REST Framework qui apporte un langage de requête léger et flexible aux API Django, inspiré de GraphQL.
Problématique
Les APIs REST traditionnelles souffrent de deux problèmes majeurs :
- Over-fetching : récupération de données inutiles
- Under-fetching : nécessité de multiples requêtes
DRF Query Lang résout ces problèmes en permettant aux clients de spécifier précisément les données nécessaires.
Fonctionnalités
Sélection Dynamique de Champs
Définissez exactement quels champs récupérer :
GET /query-lang/?query=User{"email", "username"}
Traversée de Relations
Suivez les relations entre modèles facilement :
GET /query-lang/?query=User{"email", Profile:profile{"bio"}}
Agrégations
Utilisez des fonctions intégrées :
GET /query-lang/?query=User{count(), "email"}
Exemple d'Utilisation
Requête :
GET /query-lang/?query=User{"email", Profile:profile{"bio"}}
Réponse :
[
{"email": "[email protected]", "profile": {"bio": "Hello"}},
{"email": "[email protected]", "profile": {"bio": "World"}}
]
Optimisations Automatiques
Prévention du Problème N+1
- Génération automatique de
select_relatedetprefetch_related - Querysets optimisés pour performances maximales
Serializers Dynamiques
- Génération à la volée des serializers DRF
- Adaptation automatique aux champs demandés
Sécurité Multi-Couches
Protection des Modèles
Blocage des modèles critiques par défaut :
BLOCKED_MODELS = ['User', 'Permission']
Protection des Champs
Champs sensibles automatiquement bloqués :
passwordis_staffis_superuser
Autorisation Personnalisable
AUTHORIZATION_METHOD = 'myapp.auth.check_permissions'
Architecture Technique
Parser Robuste
- Analyse syntaxique du DSL
- Gestion d'erreurs précise
- Validation des requêtes
Optimisation ORM
- Compréhension profonde de l'ORM Django
- Génération de requêtes SQL optimales
- Réduction drastique des requêtes
Installation
pip install drf-query-lang
Démonstration d'Expertise
- Introspection Python avancée
- Design de DSL (Domain Specific Language)
- Optimisation de performances
- Sécurité applicative