Come progettare URI RESTful per ottenere tutti i messaggi non letti?

-1

Sto sviluppando un ASP.NET MVC Web Api 2 con .NET Framework 4.5.1 e C #.

Ho queste entità nel database:

  • Utenti, che sono membri di gruppi.
  • Gruppi.
  • Messaggi. Gli utenti possono inviare messaggi a un gruppo.

Ho questa rotta:

config.Routes.MapHttpRoute(
    name: "GroupMessagesApiRoute",
    routeTemplate: "api/groups/{groupId}/messages/{messageId}",
    defaults: new
    {
        controller = "GroupMessages",
        messageId = RouteParameter.Optional
    }
);

Con questo percorso posso ottenere tutti i messaggi del gruppo e un messaggio , con {messageId} , inviato a {goupId} .

Ma ora voglio ottenere tutti i messaggi con un ID superiore a {messageId} . Come posso farlo?

Ho pensato di creare un'altra strada come questa:

config.Routes.MapHttpRoute(
    name: "GroupMessagesApiRoute",
    routeTemplate: "api/groups/{groupId}/messages/{messageId}/unread",
    defaults: new
    {
        controller = "GroupUnreadMessages"
    }
);

Avrò bisogno di un altro controller, 'GroupUnreadMessages, per ottenere tutti i messaggi non letti. Ma non so se questo è l'approccio migliore.

    
posta VansFannel 15.09.2014 - 09:59
fonte

1 risposta

3

Per la query id maggiore di quella certa, probabilmente il modo più chiaro è usare stringhe di query. Qualcosa come

api/groups/{groupId}/messages?id=gt:50

Il "gt: 50" è solo un'idea, è facile da analizzare ma può essere qualsiasi cosa tu voglia (non c'è un simbolo > nelle stringhe di query, è un valore chiave quindi devi aggiungere i tuoi operatori se vuoi query complesse.

La tua risorsa "messaggi" dovrebbe restituire un sottoinsieme di messaggi se ottiene una stringa di interrogazione, dove senza la stringa di query vengono restituiti tutti i messaggi.

Per tutti i messaggi non letti è possibile aggiungere un'altra stringa di query come

api/groups/{groupId}/messages?status=unread

o potresti renderlo parte della gerarchia.

api/groups/{groupId}/messages/unread

Dipende da cosa ha senso per la tua gerarchia di risorse.

    
risposta data 15.09.2014 - 10:36
fonte

Leggi altre domande sui tag