Je suis en train de créer un service web REST qui expose le modèle Django suivant:Comment exposer un modèle Django en tant que service Web RESTful?
class Person(models.Model):
uid = models.AutoField(primary_key=True)
name = models.CharField(max_length=40)
latitude = models.CharField(max_length=20)
longitude = models.CharField(max_length=20)
speed = models.CharField(max_length=10)
date = models.DateTimeField(default=datetime.datetime.now)
def __unicode__(self):
return self.name
Voilà comment je pensais à ce sujet jusqu'à présent:
Obtenez toutes les personnes
URL:http://localhost/api/persons/
Méthode:GET
Q uerystring:
startlat=
endlat=
startlng=
endlng=
Utilisé pour obtenir les personnes qui sont dans la plage de coordonnées spécifié.
page=
Utilisé pour obtenir la page spécifiée de la réponse (si la réponse contient plusieurs pages).
Retours:
200 OK
&JSON
404 Not Found
Exemple:
Demande:
GET http://localhost/api/persons/?startlat=10&endlat=15&startlng=30&endlng=60
Réponse:
{
"persons":
[
{ "href": "1" },
{ "href": "2" },
{ "href": "3" },
...
{ "href": "100" }
],
"next": "http://localhost/api/persons/?startlat=10&endlat=15&startlng=30&endlng=60&page=2"
}
Informez-vous sur une personne spécifiée
URL:http://localhost/api/persons/[id]
Méthode:GET
Retours:
200 OK
&JSON
404 Not Found
Exemple:
Demande:
http://localhost/api/persons/5/
Réponse:
{
"uid": "5",
"name": "John Smith",
"coordinates": {
"latitude":"14.43432",
"longitude":"56.4322"
},
"speed": "12.6",
"updated": "July 17, 2009, 8:46 a.m."
}
À quel point ma tentative est-elle correcte? Toutes les suggestions sont très appréciées.
Merci! Pendant la conception du service, j'ai lu un article (http://bitworking.org/news/restful_json/) qui m'a incité à utiliser des URL relatives. Pourquoi pensez-vous que l'utilisation d'URL relatives n'est pas une bonne idée? –
Alors que les URL relatives sont probablement correctes en théorie, elles présentent un problème dans la pratique. Il est très probable qu'un client va coder en dur la construction de l'URL, plutôt que de réellement résoudre l'URL relative. Cela rend votre api fragile. D'un autre côté, qu'est-ce que vous gagnez en rendant les URL relatives? Si c'est la performance, pensez à utiliser la compression, ce qui supprimera la redondance assez efficacement. Sur une note de côté - N'oubliez pas de mettre vos ressources en cache (Send Etags et expires-headers) – troelskn
J'utilise des URLs relatives dans les types de média basés sur xml et ça marche bien. Soyez prudent avec les slips à la fin parce que l'URL relative "1" est différente si l'URL de base est "http: // localhost/API/Personnes" ou "http: // localhost/API/Personnes /" J'utilise un XML: base attribuer pour éviter la confusion. Pour répondre partiellement à la question de Troelskn. Je trouve que l'URL relative est plus simple à générer du côté serveur. –