Zur Zeit habe ich die folgenden Standardfunktionen in jedem meiner Controller grundlegende CRUD-Operationen zu handhaben:POST Verwendung oder für eine WebAPI Aktion Methode GET, die eine Liste zurückgibt, erfordert aber params
GET /api/todo Get all to-do items
GET /api/todo/{id} Get an item by ID
POST /api/todo Add a new item
PUT /api/todo/{id} Update an existing item
DELETE /api/todo/{id} Delete an item
aber die Zeit kam, wo ich erkannte, dass ich tatsächlich mehrere Parameter übergeben muss, um eine Liste von Todo-Elementen zu erhalten, die auf der Datenbank-Ebene gefiltert werden, anstatt alle Elemente abzurufen und linq zu verwenden.
Zum Beispiel ist hier, wie ich es beschlossen gehen:
In meinem Controller:
// POST: api/todo
[HttpPost]
public IList<TodoItem> Get([FromBody]GetTodoItemsRequest request)
{
return _todoItemManager.GetTodoItems(request.Name, request.CategoryId);
}
Wie Sie Ich habe ein neues Modell namens sehen GetTodoItemsRequest, die eine Eigenschaft für jeden haben meine Parameter. In diesem Fall: Name, KategorieId.
Ich dachte, wenn Sie mit mehreren Parametern umgehen und eine Liste abrufen, ist es am besten, POST zu machen und ein Modell speziell dafür zu erstellen. Anstatt ein GET zu verwenden und alle Arten von Informationen in der URL zu übergeben.
Es scheint ein bisschen komisch zu sein, das oben zu tun ... Würde es nicht als eine vollkommen feine Lösung sehen oder gibt es etwas, das mir in der WebAPI-Welt fehlt?
Werfen Sie einen Blick auf http://stackoverflow.com/questions/5020704/how-to-design-restful-search-filtering, bespricht diesen genauen Punkt. –