Mvc-Web-API-Komplex-Objekt-Abfrage via GET
Gibt es eine Möglichkeit die Abfrage eines web-api durch "BEKOMMEN", aber mit komplexen Objekts in seine parameter?
Allen Beispielen, die ich bisher gesehen haben, scheint zu zeigen, dass ich verwenden würde "POST". Aber ich will nicht von "POST", denn dies ist eine Abfrage, in der gleichen Zeit, die ich nicht wollen, dass eine Funktion mit 16 Argumente, weil das einfach schreit spröde.
public Product Get(int id, string name, DateTime createdBy, string stockNumber, ... )
{
...
}
Möchte ich die oben sich in:
public Product Get(ProductQuery query)
{
...
}
Gibt es eine Möglichkeit, dies zu tun? Und wie stellen Sie die HttpClient-Arbeit mit den oben genannten Dienst.
- Nein, Sie können nicht passieren Sie eine Modell über eine GET-Anfrage. Die gängige Praxis ist, übergeben Sie die id der Methode und Hole dann den Rest der Daten von der Quelle.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hätten Sie die
ProductQuery
parameter übergeben werden[FromUri]
.Sagen wir: dies ist Ihre
ProductQuery
Klasse:Können Sie kommentieren Ihre action-parameter mit
[FromUri]
...... und haben die Eigenschaften von
ProductQuery
(d.h.Id
,Name
, ...) können weitergegeben werden aus der query-string im Uri:Möchten Sie vielleicht Blick auf die OData-Unterstützung in Web-API - vielleicht würde das tun, was Sie wollen? Hängt davon ab, wie kompliziert die Durchführung der Abfrage ist!
http://blogs.msdn.com/b/alexj/archive/2012/08/15/odata-support-in-asp-net-web-api.aspx