In der Vorlage für Web API 2 lautet eine Post-Methode immer wie folgt:
[ResponseType(typeof(MyDTO))]
public IHttpActionResult PostmyObject(MyDTO myObject)
{
...
return CreatedAtRoute("DefaultApi", new { id = myObject.Id }, myObject);
}
Ich verstehe diese CreatedAtRoute()
Methode nicht. Kann CreatedAtRoute()
mir jemand die Methode erklären ?
c#
asp.net
asp.net-web-api
asp.net-web-api-routing
kriegerisch
quelle
quelle
Antworten:
Die
CreatedAtRoute
Methode soll einen URI an die neu erstellte Ressource zurückgeben, wenn Sie eine POST-Methode aufrufen, um ein neues Objekt zu speichern. Wenn Sie beispielsweise eine Bestellposition POSTEN, können Sie eine Route wie 'api / order / 11' zurückgeben (11 ist offensichtlich die ID der Bestellung).Übrigens stimme ich zu, dass der MSDN-Artikel für das Verständnis von Nutzen ist. Die Route, die Sie tatsächlich zurückgeben, hängt natürlich von Ihrem Routing-Setup ab.
quelle
[Route("[controller]")]
Was kann ich zurückgeben , wenn ich beispielsweise mit dem Controller ein Objekt im Dateicontroller erstelle (damit die benachbarte GET-Aktion beispielsweise mit der URL aufgerufen werden kann)?Wenn Sie CreatedAtRoute verwenden, ist das erste Argument der Methodenname von Get to the resource. Der nicht so offensichtliche Trick besteht darin, dass Sie trotz des angegebenen korrekten Methodennamens den Parameter Name für das HttpGet-Attribut verwenden müssen, damit er funktioniert.
Wenn die Rückgabe in Ihrem Beitrag also wie folgt lautet:
Dann sollte Ihr Get-Methodenattribut so aussehen, auch wenn Ihre Methode Get heißt:
Aufrufe Ihrer Post-Methode geben nicht nur das neue Objekt zurück (normalerweise als JSON), sondern setzen auch den Location-Header für die Antwort auf den URI, der diese Ressource erhalten würde.
quelle
In .net Core WebAPI verwenden Sie diese Methode, um einen 201-Code zurückzugeben. Dies bedeutet, dass das Objekt erstellt wurde.
Wie Sie oben sehen können, kann die CreatedAtRoute 3 Parameter empfangen:
routeName Ist der Name, den Sie für die Methode eingeben müssen, die der URI ist, der diese Ressource nach der Erstellung erhält.
routeValues Dies ist das Objekt, das die Werte enthält, die an der benannten Route an die GET-Methode übergeben werden. Es wird verwendet, um das erstellte Objekt zurückzugeben
Inhalt Es ist das Objekt, das erstellt wurde.
Das obige Beispiel zeigt die Implementierung von zwei Methoden eines einfachen Controllers mit einer einfachen GET-Methode mit dem verbundenen Namen und der POST-Methode, die ein neues Objekt erstellt.
WICHTIG
Beachten Sie, dass der erste Parameter bei CreatedAtRoute (routeName) bei der Definition des Namens bei der Get-Methode identisch sein muss.
Das Objekt im zweiten Parameter muss über die erforderlichen Felder verfügen, die Sie zum Abrufen der Ressource in der Get-Methode verwenden. Sie können sagen, dass es sich um eine Teilmenge des selbst erstellten Objekts handelt
Der letzte Parameter ist das Firmenobjekt, das in der Textanforderung in seiner vollständigen Form empfangen wurde.
ENDLICH
Als letztes Ergebnis, wenn der Beitrag zum Erstellen einer neuen Firma für diese API erstellt wurde, geben Sie eine Route wie 'api / company / {id}' zurück, die Ihnen die neu erstellte Ressource zurückgibt
quelle