|
|
Veröffentlicht am 16.08.2016 13:52:38
|
|
|
|

In WebAPI kann der Anforderungskörper (HttpContent) nur einmal gelesen werden, nicht zwischengespeichert und nur weitergeleitet werden.
Zum Beispiel:
1. Anfrageadresse: /?id=123&name=bob
Serverseitige Methode: void Action(int id, Stringname) // Alle Parameter sind einfache Typen, daher stammen sie alle aus der URL
2. Anfrageadresse: /?id=123&name=bob
Serverseitige Methode: void Action([FromUri] int id, [FromUri] Stringname) // Wie oben
void Action ([FromBody]-Stringname); Das Attribut [FormBody] zeigt an, dass der gesamte Körper als Zeichenstring als Argument gelesen wird
3. Anfrageadresse: /?id=123
Klassendefinition:
öffentliche Klasse Customer { // Ein komplexer Objekttyp definiert öffentlicher Stringname { get; Set; } öffentlich int Alter { get; Set; }
}
Server-seitige Methode: void Action(int id, Customer c) // Parameter id wird aus der Abfrage-String gelesen, Parameter c ist eine komplexe Customer-Objektklasse, die vom Körper über Formatter gelesen wird
Serverseitige Methode: Void Action (Kunde c1, Kunde c2) // Fehler! Mehrere Parameter sind komplexe Typen und alle versuchen, von einem Körper abzulesen, der nur einmal gelesen werden kann
Server-seitige Methode: void action([FromUri] Customer c1, Customer c2) // Ja! Im Gegensatz zur obigen Aktion wird der komplexe Typ C1 aus der URL gelesen und C2 aus dem Hauptteil
4. ModelBinder-Methode:
void Action([ModelBinder(MyCustomBinder)] SomeType c) // Gibt an, dass ein bestimmter Modellbinder zur Auflösung des Parameters verwendet wird
[ModelBinder(MyCustomBinder)] öffentliche Klasse SomeType { } // Wenden Sie diese Regel auf alle SomeType-Typparameter an, indem Sie das [ModelBidner(MyCustomBinder)]-Attribut auf einen bestimmten Typ SomeType deklarieren
void Action(SomeType c) // Da der Typ von c SomeType ist, werden die Eigenschaften auf SomeType angewendet, um seine Modellbindung zu bestimmen
Zusammenfassung:
1. Die standardmäßigen einfachen Parameter werden durch URL-Parameter übergeben, mit Ausnahmen:
1.1 Wenn die Route den id-Parameter enthält, wird der id-Parameter durch die Route geleitet;
1.2 Wenn der Parameter als [FromBody] markiert ist, kann der Parameter ein einfacher Parameter sein, und der Client kann ihn über POST weitergeben: $.ajax(url, '=value') oder $.ajax({url: url, data: {'': 'value'}});
2. Die standardmäßigen komplexen Parameter (benutzerdefinierte Entitätsklassen) werden über POST übergeben, mit Ausnahmen:
2.1 Wenn der Parameterwert als [FromUri] markiert ist, kann der Parameter ein komplexer Parameter sein;
3. Ein Parameter mit der Markierung [FromBody] darf nur einmal erscheinen, ein Parameter mit der Markierung [FromUri] kann mehrfach erscheinen, und wenn der Parameter mit der Markierung [FromUri] ein einfacher Parameter ist, kann das Tag entfernt werden. |
Vorhergehend:.NET Oracle Multi-Table Query-Methode, eine dumme Methode.Nächster:C# verwendet Reflexion, um zu bestimmen, ob eine Eigenschaft zugewiesen ist
|