Pergunta

Tenho um cenário em que possuo API REST que gerencia um Recurso que chamaremos de Grupo.Um Grupo é semelhante em conceito a um fórum de discussão nos Grupos do Google.

Agora tenho dois métodos de acesso GET que acredito que precisam de representações separadas.

O primeiro método de acesso GET recupera a quantidade mínima de informações sobre um Grupo.Dado um ID_do_grupo ele deve retornar uma quantidade mínima de informações como

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

O segundo método de acesso GET recupera informações resumidas de natureza mais estatística, como:

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

Quero separar esses métodos de acesso a dados e atualmente estou planejando este design:

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

Somente este último retornará as informações estatísticas sobre o grupo.O que você pensa sobre isso ?

Foi útil?

Solução

Não vejo problema na sua abordagem.Como as estatísticas são basicamente dados separados, você também pode tratá-las como um recurso separado, fornecendo um URI como

GET /stat/:group_id

Além disso, você pode fazer referência cruzada aos seus recursos (ou seja, um grupo se vincula ao recurso estatístico correspondente e 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: {
      [ ... ]
    }
}

Outras dicas

O que seria ainda melhor seria se você incorporasse o link para as estatísticas no resumo do grupo:

{ 
    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"
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top