Méthode POST (ADO.NET Data Services Framework)
Les listes et exemples suivants décrivent les protocoles employés pour l'utilisation de la méthode POST par ADO.NET Data Services. Les autres comportements requis par Hypertext Transfer Protocol, RFC 2616 sont décrits dans Spécifications HTTP courantes (ADO.NET Data Services Framework) et PUT, POST et DELETE (ADO.NET Data Services Framework).
Les protocoles suivants s'appliquent aux demandes HTPP qui utilisent la méthode POST.
Une méthode POST exécutée sur des ressources ADO.NET Data Services doit contenir une sérialisation, incluse dans le corps de la demande, du jeu d'entités ou du type d'entité identifié par le nœud feuille de l'URI de demande. La sémantique de la demande indique que les données doivent être converties en une nouvelle ressource ADO.NET Data Services.
Les demandes POST peuvent inclure des valeurs dans le corps de la demande pour les propriétés de clé d'entité de l'entité à créer. Une telle demande peut échouer avec un code de réponse 422 (Impossible de traiter l'entité) si le fournisseur de stockage associé au service de données affecte automatiquement des valeurs de clé.
Les demandes POST ne doivent pas spécifier l'URI de l'entité à ajouter. Si l'URI est spécifié, un code de réponse 400 (Demande incorrecte) est retourné et l'entité n'est pas ajoutée.
Toutes les demandes POST qui aboutissent insèrent une nouvelle entité dans le jeu d'entités. Les demandes retournent un code de réponse 201 (Entité créée) et incluent un en-tête d'emplacement dans la réponse avec l'URI de l'entité nouvellement créée.
Toute annotation de contenu différé dans la charge utile de demande est ignorée.
Si l'URI de demande dans l'en-tête HTPP ne correspond pas à l'URI associé dans la charge utile de demande, l'URI de demande est prioritaire et la charge utile est traitée comme si elle incluait la valeur de l'URI de demande.
Les demandes POST concernant des opérations de service peuvent retourner un code de réponse 500 (Erreur interne du serveur) si une erreur se produit durant l'exécution de l'opération ; par exemple, une erreur d'exécution autre que DataServiceException.
Types qui prennent en charge la méthode POST
Les exemples suivants illustrent les éléments finaux de la syntaxe d'URI HTTP et les conditions dans lesquelles les éléments prennent en charge la méthode POST. Chaque cas inclut une description d'une demande POST et les résultats prévisibles.
/<jeu_entités>
L'exemple d'URI suivant illustre un jeu d'entités en tant qu'élément final :
/Customers
Description :
Prend en charge la méthode POST.
Insère une instance de type d'entité unique spécifiée par le corps de la demande dans le jeu.
L'URI de l'entité à insérer ne doit pas apparaître dans le corps de la demande. S'il est présent, un code de réponse 400 (Demande incorrecte) est retourné.
La charge utile de la demande peut contenir un nouveau contenu pour des jeux d'entités en rapport avec celui-ci par le biais d'une propriété de navigation ou de lien. Aucune profondeur maximale n'est définie pour de telles mises à jour.
Autorise la liaison de l'entité de niveau supérieur nouvellement créée à des entités existantes ou à d'autres entités nouvellement créées :
Si la ressource 1 contient uniquement l'URI d'une ressource 2 existante comme valeur d'une propriété de navigation ou de lien de ressource, la ressource 1 est liée à la ressource 2.
Si la ressource 1 contient l'URI et le corps d'une ressource nouvelle et connexe, un code de réponse 400 (Demande incorrecte) est retourné car la propriété d'URI ne doit pas être spécifiée durant l'insertion.
Si la ressource 1 contient uniquement le corps et non l'URI d'une ressource 2 nouvelle et connexe, la ressource 1 et la ressource 2 sont insérées et liées.
Exemples :
L'exemple suivant insère un nouveau Customer
et le lie aux commandes 1 et 3 existantes.
L'URI de la demande se termine par /Customers
. Il est au format JSON.
{
Company Name:"Contoso"
City: "Seattle"
Orders : [
{ __metadata: {uri:"/Orders(1)" }},
{ __metadata: {uri:"/Orders(3)" }}
]
}
L'exemple suivant insère un nouveau Customer
et une nouvelle commande connexe.
L'URI de la demande se termine par /Customers
. Il est au format JSON.
{
Company Name:"Contoso Widgets"
City: "Seattle"
Orders : [
{
OrderName: "NewOrder",
// additional property values go here
}
]
}
Remarque |
---|
Le paramètre de type dans les objets __metadata décrits dans Règles de sérialisation JSON (ADO.NET Data Services Framework) est facultatif si le type d'entité ne fait pas partie d'une hiérarchie d'héritage. Si aucun type n'est spécifié, le type de base pour le jeu d'entités est utilisé par défaut. Si le type fait partie d'une hiérarchie d'héritage, le paramètre de type doit être spécifié. |
/jeu_entités(keyPredicate)
L'exemple d'URI suivant illustre un prédicat de clé en tant qu'élément final :
/Customers('ALFKI')
Description :
La méthode POST n'est pas prise en charge.
/<propriété_navigation> ou /<propriété_lien>
L'exemple d'URI suivant illustre une propriété de navigation en tant qu'élément final :
/Customers('ALFKI')/Orders
/Products(1)/Category
Description :
La propriété de navigation et la propriété de lien prennent en charge la méthode POST si l'extrémité de relation a une cardinalité supérieure à un.
Les propriétés de navigation et de lien doivent pointer vers l'extrémité de relation qui a une cardinalité supérieure à un, sinon un code de réponse 405 (Méthode non prise en charge) est retourné.
Ces propriétés utilisent la même sémantique que pour
/<EntitySet>
, hormis le fait que la ressource nouvellement insérée est liée à la ressource identifiée par l'avant-dernier segment d'URI.
/<type_complexe>
L'exemple d'URI suivant illustre un type complexe en tant qu'élément final :
/Customers('ALFKI’)/Address
Description :
- La méthode POST n'est pas prise en charge.
/<propriété>
L'exemple d'URI suivant illustre une propriété en tant qu'élément final :
/Customers('ALFKI’)/FirstName
Description :
- La méthode POST n'est pas prise en charge.
<propriété>/$value
L'exemple d'URI suivant illustre une valeur de propriété en tant qu'élément final :
/Customers('ALFKI’)/FirstName/$value
Description :
- La méthode POST n'est pas prise en charge.
/<nom_opération_service>
L'exemple d'URI suivant illustre un nom d'opération de service en tant qu'élément final :
/CustomersByCity?city=London
Description :
Prend en charge la méthode POST.
Invoque l'opération de service sur le serveur.
Les paramètres sont passés à l'opération de service à l'aide du corps de la demande.
Les paramètres sont codés à l'aide de
application/x-www-form-urlencoding
.Les opérations de service peuvent être appelées à l'aide des verbes GET ou POST et le document de métadonnées pour le service spécifie le verbe pris en charge en fonction de l'opération de service. La méthode POST est activée sur la base de chaque opération de service.
Voir aussi
Concepts
Méthode PUT (ADO.NET Data Services Framework)
Méthode DELETE (ADO.NET Data Services Framework)