Quale stile di attributo di routing dell'API Web è preferito?

1

Puoi farlo in questo modo:

[Route("api/DeliveryItems/{ID:int}/{CountToFetch:int}")]

... chiamandolo così:

http://localhost:28642/api/deliveryitems/N/N

... che ha il vantaggio dell'attributo di routing che documenta esattamente quali argomenti sono necessari ai metodi.

Oppure puoi farlo in questo modo:

[Route("api/DeliveryItems")]

... chiamandolo così:

http://localhost:28642/api/deliveryitems?ID=N&CountToFetch=N

... che ha il vantaggio di avere una chiara "separazione di preoccupazioni" (o forse "separazione di contesto" o "separazione di intenti"), in modo che le informazioni sul percorso siano una cosa, le args sono un'altra, e non lo fanno mai il twain si incontra (nella stringa di attributo di instradamento, in ogni caso).

Qualche potente motivazione per optare per uno stile rispetto all'altro?

    
posta B. Clay Shannon 12.02.2014 - 20:34
fonte

1 risposta

2

Non so davvero ASP.NET-MVC, ma in RoR la convenzione è di usare una combinazione che assomiglierà a questa:

[Route("api/{ID:int}/DeliveryItems")]

E lo userai in questo modo:

http://localhost:28642/api/N/deliveryitems?CountToFetch=M

Come decidi quali parametri ottenere nel percorso e quali ottenere nella stringa di query? Pensa OOP! La richiesta HTTP sta eseguendo un metodo di un oggetto. Il percorso è per il recupero dell'oggetto e la decisione del metodo mentre la stringa di query è per specificare gli argomenti.

Supponendo che ID sia l'id di una categoria di articoli da consegnare, quella categoria sarebbe un oggetto ItemsCategory e la richiesta HTTP sarà simile a:

API.FetchItemsCategory(N).FetchDeliveryItems(M)

Dai un'occhiata a REST

    
risposta data 12.02.2014 - 22:36
fonte

Leggi altre domande sui tag