2012-07-25 5 views
0

Je faisais référence au livre O'Reilly sur la conception des API REST, qui définit clairement le format du message en ce qui concerne la manière dont les liens doivent être utilisés pour représenter des ressources et des éléments interdépendants. Mais tous les exemples sont pour lire une ressource (GET) et comment le serveur structure le message. Mais qu'en est-il un Créer (POST)? Est-ce que la structure du message pour la création d'un objet similairement interconnecté devrait être similaire à travers des liens ?? A titre d'exemple, considérons que nous voulons créer un objet Person avec un champ parent. Si le format de message JSON envoyé au serveur à travers le POST (corps post msg) être comme: -corps du message dans REST

{ 
    name:'test', 
    age:12, 
    links:[ 
    { 
     rel:'parent', 
     href:'/people/john' 
    }  
] 
} 

Répondre

1

Oui, c'est une façon de le faire. Les informations GET peuvent être rendues lisibles par l'utilisateur, mais les informations POST/PUT ciblent la machine. Ajouter des informations pour réduire la nécessité pour le serveur de traiter des informations (par exemple en se limitant à vérifier les informations est logique plutôt que de les récupérer de toutes pièces) est également très logique en termes de performances. Tant que vous faites vérifiez: gardez à l'esprit que les données de l'utilisateur doivent être traitées comme suspectes sur des principes généraux. Vous ne voulez pas que le premier type d'ExtJS-savvy puisse forger des demandes à vos services.

Vous pouvez également formater des données au format XML ou CSV, selon ce qui convient le mieux à l'application spécifique. En gardant à l'esprit que vous pourriez vouloir refactoriser ou réutiliser le code, adhérer à une norme unique est également logique. Tout bien considéré, JSON est probablement la meilleure option.

+0

donc would u dire que dire lorsque le client souhaite mettre à jour le parent à David, il envoie une structure similaire en arrière: - { nom: 'test', âge: 12, liens: [{ rel: 'parent', href: '/ personne/david' } ] } – redzedi

Questions connexes