Question

J'ai un scénario dans lequel je API REST qui gère une ressource que nous appellerons groupe. Un groupe est similaire dans le concept à un forum de discussion dans les groupes Google.

Maintenant, j'ai deux méthode d'accès GET que je crois besoins des représentations distinctes.

La 1ère méthode d'accès GET récupère la quantité minimale d'informations sur un groupe. Compte tenu de group_id il doit renvoyer une quantité minimale d'informations comme

{ 
    group_id: "5t7yu8i9io0op",
    group_name: "Android Developers",
    is_moderated: true,
    number_of_users: 34,
    new_messages: 5,
    icon: "http://boo.com/pic.png"
}

La 2ème méthode d'accès GET retrives informations sommaires qui sont plus de nature statistique comme:

{ 
    group_id: "5t7yu8i9io0op",
    top_ranking_users: {
      [ { user: "george", posts: 789, rank: 1 }, 
        { user: "joel", posts: 560, rank: 2 }  ...]
    },
    popular_topics: {
      [ ... ]
    }
}

Je veux séparer ces méthodes d'accès aux données et je prévois actuellement sur cette conception:

GET /group/:group_id/
GET /group/:group_id/stat

Seul ce dernier renverra les informations statistiques sur le groupe. Que pensez-vous à ce sujet?

Était-ce utile?

La solution

Je ne vois pas de problème avec votre approche. Étant donné que les statistiques sont données essentiellement distinctes, vous pouvez traiter les statistiques comme une ressource à part, aussi, fournir un URI comme

GET /stat/:group_id

En outre, vous pouvez référencer vos ressources traverser (ce qui signifie un lien de groupe à la ressource stat correspondante et vice versa):

GET /group/5t7yu8i9io0op

{ 
    group_id: "5t7yu8i9io0op",
    group_name: "Android Developers",
    is_moderated: true,
    number_of_users: 34,
    new_messages: 5,
    icon: "http://boo.com/pic.png",
    stats: "http://mydomain.com/stat/5t7yu8i9io0op"
}

GET /stat/5t7yu8i9io0op

{ 
    group: "http://mydomain.com/group/5t7yu8i9io0op",
    top_ranking_users: {
      [ { user: "george", posts: 789, rank: 1 }, 
        { user: "joel", posts: 560, rank: 2 }  ...]
    },
    popular_topics: {
      [ ... ]
    }
}

Autres conseils

Ce qui serait encore mieux serait si vous avez intégré le lien vers les statistiques dans le résumé du groupe:

{ 
    group_id: "5t7yu8i9io0op",
    group_name: "Android Developers",
    is_moderated: true,
    number_of_users: 34,
    new_messages: 5,
    icon: "http://boo.com/pic.png"
    stats_link : "http://whatever.who/cares"
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top