Substituer une base de données par un serveur REST

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour à tous,

Cela fait un moment que je suis Zeste de Savoir et je profite de mon message pour féliciter l'initiative et le travail associé.

Je commence actuellement le développement d'un site Internet avec Django, mais je ne souhaite pas utiliser de base de données. Je dois faire des requêtes vers un serveur REST pour manipuler mes données. Par exemple, la requête suivante va me produire la réponse suivante :

Requête :

1
GET http://server/user/1

Réponse :

1
2
3
4
{
    id: 1
    username: toto
}

Je cherche à pouvoir exécuter cette requête, puis en récupérer le résultat de la manière suivante :

1
2
user = User.objects.get(id = 1)
print user.username # Affiche "toto" 

N'ayant pas trouvé de documentation pour faire cela de manière assez simple je me permets de faire ce message. Si cela aboutit j'espère pouvoir engendrer un mini-tuto sur le sujet…

Maintenant, mon serveur REST m'interdit de récupérer la liste de tous les utilisateurs, ou plutôt n'implémente pas cette fonctionnalité. De ce fait la requête suivante aboutit à une erreur 404 :

1
GET http://server/users

La requête suivante devra donc lever une exception :

1
User.objects.all()

Il faut donc que je sois en capacité de :

  • Définir quels filtres sont possibles ou pas à travers la méthode get()
  • Définir si la méthode all() est appelable
  • Idem pour save() et éventuellement d'autres méthodes
  • Et certainement d'autres choses que j'oublie

Pour ce faire je pensais écrire un backend à l'image de django.db.backends.sqlite3. Certaines fonctionnalités ne pourront bien entendu pas fonctionner telles que manage.py syncdb.

Voici (enfin) mes questions :

  • Estce que cela a-t-il déjà été implémenté à votre connaissance ? Pour le coup Google ne m'a pas aidé :(
  • Où pourrais-je trouver une documentation pour écrire un backend à ma sauce ?
  • Est-ce une bonne idée ?
  • Est-ce que je dois revoir ma façon de récupérer mes données (c'est-à-dire sans utiliser User.objects....) ?

La condition sine qua non étant que je dois manipuler mes données en faisant des requêtes vers un serveur REST. Dans mon exemple il ne s'agissait qu'un get mais je dois pouvoir ajouter, mettre à jour ou supprimer des données en fonction des limites imposées par le serveur.

Merci par avance pour votre aide, j'espère ne pas avoir fait trop long. :)

+1 -0
Auteur du sujet

Bonjour artragis, merci pour ta réponse. Effectivement je n'avais pas essayé de chercher les choses sous cet angle. Mais du coup si je comprends bien je dois me passer des modèles Django (qui héritent de django.db.models.Model). Cela ne risque pas de me poser de problème de compatibilité avec le reste des fonctionnalités de Django ? À vue de nez j'ai l'impression que je n'aurai pas de souci mais comme je ne connais Django que depuis quelques jours je préfère poser la question :)

Encore merci !

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte