POST-Methode (ADO.NET Data Services-Framework)
Die Protokolle für die Verwendung der POST-Methode von ADO.NET Data Services werden in den folgenden Listen und Beispielen beschrieben. Weitere für Hypertext Transfer Protocol, RFC 2616 erforderliche Verhalten werden unter Allgemeine HTTP-Anforderungen (ADO.NET Data Services-Framework) und PUT, POST und DELETE (ADO.NET Data Services-Framework) beschrieben.
Die folgenden Protokolle gelten für HTTP-Anforderungen, die die POST-Methode verwenden.
Eine auf den Ressourcen von ADO.NET Data Services ausgeführte POST-Methode muss im Anforderungstext eine Serialisierung der Entitätenmenge oder des Entitätstyps enthalten, die oder der durch den Blattknoten des Anforderungs-URI identifiziert wird. Die Semantik der Anforderung gibt an, dass die Daten eine neue Ressource der ADO.NET Data Services darstellen sollen.
POST-Anforderungen können für die gesamten Schlüsseleigenschaften der Entität, die erstellt werden soll, Werte im Anforderungstext enthalten. Eine solche Anforderung kann mit dem Antwortcode "422 UnProcessable Entity" fehlschlagen, wenn der dem Datendienst zugeordnete Speicheranbieter Schlüsselwerte automatisch zuweist.
In POST-Anforderungen muss nicht der URI der hinzuzufügenden Entität angegeben werden. Wenn dieser angegeben ist, wird der Antwortcode "400 Bad Request" zurückgegeben, und die Entität wird nicht hinzugefügt.
Alle erfolgreichen POST-Anforderungen fügen eine neue Entität in die Entitätenmenge ein. Anforderungen geben den Antwortcode "201 Created" zurück und beinhalten einen Adressheader in der Antwort mit dem URI der neu erstellten Entität.
Alle verzögerten Inhaltsanmerkungen in der Anforderungsnutzlast werden ignoriert.
Wenn der Anforderungs-URI im HTTP-Header nicht mit dem zugeordneten URI im Anforderungsaufkommen übereinstimmt, hat der Anforderungs-URI Vorrang und die Nutzlast wird so behandelt, als enthielte sie den Wert des Anforderungs-URI.
POST-Anforderungen an Dienstvorgänge geben möglicherweise den Antwortcode "500 Internal Server Error" zurück, wenn während der Ausführung des Vorgangs ein Fehler auftritt, zum Beispiel eine andere Laufzeitausnahme als DataServiceException.
Typen, die die POST-Methode unterstützen
Die folgenden Beispiele zeigen die Endelemente der Syntax des HTTP-URL-Pfads sowie die Bedingungen, unter denen die Elemente die POST-Methode unterstützen. Jeder Fall enthält eine Beschreibung einer POST-Anforderung und die vorhersehbaren Ergebnisse.
/<EntitySet>
Im folgenden URI-Beispiel ist eine als Endelement festgelegte Entitätenmenge dargestellt:
/Customers
Beschreibung:
Unterstützt die POST-Methode.
Fügt eine einzelne, durch den Anforderungstext angegebene Entitätstypeninstanz in die Menge ein.
Der URI der Entität, die eingefügt werden soll, muss nicht im Anforderungstext angegeben sein. Ist dies jedoch der Fall, wird der Antwortcode "400 Bad Request" zurückgegeben.
Die Anforderungsnutzlast kann neue Inhalte für Entitätenmengen enthalten, die mit dieser über eine Navigations- oder Verknüpfungseigenschaft verbunden sind. Für derartige Aktualisierungen ist keine maximale Tiefe festgelegt.
Ermöglicht ein Binden der neu erstellten Entität der höchsten Ebene an bestehende oder neu erstellte Entitäten:
Wenn Ressource 1 nur den URI einer bestehenden Ressource 2 als Wert einer Ressourcennavigations- oder -verknüpfungseigenschaft enthält, wird Ressource 1 an Ressource 2 gebunden.
Wenn Ressource 1 URI und Text einer neuen und verknüpften Ressource enthält, wird der Antwortcode "400 Bad Request" zurückgegeben, da die URI-Eigenschaft während des Einfügevorgangs nicht angegeben werden darf.
Wenn Ressource 1 nur den Text, jedoch nicht den URI einer neuen und verknüpften Ressource enthält, werden Ressource 1 und Ressource 2 eingefügt und gebunden.
Beispiele:
Beim folgenden Beispiel wird ein neuer Customer
eingefügt und an die bestehende Aufträge 1 und 3 gebunden.
Der Anforderungs-URI endet mit/Customers.
Er liegt im JSON-Format vor.
{
Company Name:"Contoso"
City: "Seattle"
Orders : [
{ __metadata: {uri:"/Orders(1)" }},
{ __metadata: {uri:"/Orders(3)" }}
]
}
Beim folgenden Beispiel werden ein neuer Customer
und ein neuer verknüpfter Auftrag eingefügt.
Der Anforderungs-URI endet mit/Customers.
Er liegt im JSON-Format vor.
{
Company Name:"Contoso Widgets"
City: "Seattle"
Orders : [
{
OrderName: "NewOrder",
// additional property values go here
}
]
}
Hinweis |
---|
Die Typparameter in den unter JSON-Serialisierungsregeln (ADO.NET Data Services-Framework) beschriebenen __metadata-Objekten sind optional, wenn der Entitätstyp nicht Teil einer Vererbungshierarchie ist. Wenn kein Typ angegeben ist, wird der Basistyp für die Entitätenmenge verwendet. Wenn der Typ zu einer Vererbungshierarchie gehört, muss der Typparameter angegeben werden. |
/EntitySet(keyPredicate)
Das folgende URI-Beispiel zeigt ein Schlüsselprädikat als Endelement.
/Customers('ALFKI')
Beschreibung:
Die POST-Methode wird nicht unterstützt.
/<NavigationProperty> ODER /<LinkProperty>
Das folgende URI-Beispiel zeigt eine Navigationseigenschaft als Endelement:
/Customers('ALFKI')/Orders
/Products(1)/Category
Beschreibung:
Die Navigations- und die Verknüpfungseigenschaft unterstützen die POST-Methode, wenn das Beziehungsende über eine Kardinalität mit einem Wert größer als 1 verfügt.
Die Navigations- und Verknüpfungseigenschaften müssen auf das Beziehungsende verweisen, das über eine Kardinalität mit einem Wert größer als 1 verfügt. Andernfalls wird der Antwortcode "405 Method Not Supported" zurückgegeben.
Diese Eigenschaften verwenden die gleiche Semantik wie für das zuvor beschriebene
/<EntitySet>
, außer dass die neu eingefügte Ressource an die vom vorletzten URI-Segment identifizierte Ressource gebunden wird.
/<ComplexType>
Das folgende URI-Beispiel zeigt einen komplexen Typ als Endelement:
/Customers('ALFKI’)/Address
Beschreibung:
- Die POST-Methode wird nicht unterstützt.
/<Property>
Das folgende URI-Beispiel zeigt eine Eigenschaft als Endelement.
/Customers('ALFKI’)/FirstName
Beschreibung:
- Die POST-Methode wird nicht unterstützt.
<Property>/$value
Das folgende URI-Beispiel zeigt einen Eigenschaftswert als Endelement.
/Customers('ALFKI’)/FirstName/$value
Beschreibung:
- Die POST-Methode wird nicht unterstützt.
/<ServiceOperationName>
Im folgenden URI-Beispiel wird der Name eines Dienstvorgangs als Endelement dargestellt:
/CustomersByCity?city=London
Beschreibung:
Unterstützt die POST-Methode.
Ruft den Dienstvorgang auf dem Server auf.
Parameter werden im Anforderungstext an den Dienstvorgang übergeben.
Parameter werden mithilfe von
application/x-www-form-urlencoding
codiert.Dienstvorgänge können mit GET- oder POST-Verben aufgerufen werden, und das Metadatendokument für den Dienst gibt an, welche pro Dienstvorgang unterstützt werden. POST ist auf Dienstvorgangsbasis aktiviert.
Siehe auch
Konzepte
PUT-Methode (ADO.NET Data Services-Framework)
DELETE-Methode (ADO.NET Data Services-Framework)