Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Pour les points de terminaison REST, l’en-tête Location de réponse indique aux clients où récupérer une ressource nouvellement créée. Le générateur d’API de données (DAB) retourne Location les POST insertions. Pour PUT ou PATCH upserts qui créent des lignes, l’en-tête peut être omis.
Lorsque DAB définit l’en-tête Location
| Scénario | Code de statut | En-tête d’emplacement (comportement actuel) |
|---|---|---|
POST crée une ligne (table) |
201 Créé | Présent : segments de chemin de clé primaire, par exemple id/123 ou categoryid/3/pieceid/1. |
POST exécute la procédure stockée retournant de nouvelles lignes |
201 Créé | Présente si PK peut être dérivé ; peut être vide quand il ne peut pas. |
PUT upsert met à jour la ligne existante |
200 OK | Non présent |
PUT upsert insère une nouvelle ligne (pas de If-Match) |
201 Créé | Peut être omis ; ne s’appuient pas sur Location |
PATCH upsert met à jour la ligne existante |
200 OK | Non présent |
PATCH upsert insère une nouvelle ligne (pas de If-Match) |
201 Créé | Peut être omis ; ne s’appuient pas sur Location |
PUT
/
PATCH avec If-Match: * et ligne manquants |
404 Introuvable | Non présent |
| Toute mise à jour (ligne existait) | 200 OK | Non présent |
Comportement
- Les clés primaires composites apparaissent sous forme de segments ordonnés, par exemple
book_id/1/id/5001oucategoryid/3/pieceid/1. - Les mappages de noms de colonne (alias) utilisent les noms de champs exposés par REST dans le chemin d’accès.
Exemple : POST créant un élément
Requête
POST /api/Books
Content-Type: application/json
{
"title": "New Book",
"publisher_id": 42
}
Réponse
HTTP/1.1 201 Created
Location: http://localhost:50246/api/Books/id/123
Content-Type: application/json
{
"id": 123,
"title": "New Book",
"publisher_id": 42
}
Le client peut maintenant GET http://localhost:50246/api/Books/id/123.
Exemple : INSERTION POST dans une table de clés composite
Requête
POST /api/Inventory
Content-Type: application/json
{
"categoryid": 3,
"pieceid": 1,
"categoryName": "SciFi"
}
Réponse
HTTP/1.1 201 Created
Location: http://localhost:50246/api/Inventory/categoryid/3/pieceid/1
Content-Type: application/json
{
"categoryid": 3,
"pieceid": 1,
"categoryName": "SciFi"
}
Exemple : PUT mettant à jour la ligne existante (aucun emplacement)
Requête
PUT http://localhost:50246/api/Books/id/1
Content-Type: application/json
{
"title": "Updated Title"
}
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 1,
"title": "Updated Title"
}
(Aucun Location en-tête.)
Exemple : PUT insérant une nouvelle ligne
Requête
PUT http://localhost:50246/api/Books/id/500
Content-Type: application/json
{
"title": "Inserted via PUT",
"publisher_id": 7
}
Réponse
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": 500,
"title": "Inserted via PUT",
"publisher_id": 7
}
( l’en-têteLocation peut être omis ici.)
Exemple : PUT avec If-Match et ligne manquantes
Requête
PUT http://localhost:50246/api/Books/id/500
If-Match: *
Content-Type: application/json
{
"title": "Attempted Update"
}
Réponse
HTTP/1.1 404 Not Found
Content-Type: application/json
{
"error": "No Update could be performed, record not found"
}
(Aucun Location en-tête.)
Révision
-
POST avec création :
Locationest présent avec le chemin de clé primaire. -
PUT ou PATCH avec mise à jour : Non
Location. -
PUT ou PATCH avec insertion : Renvoie
201 Created;Locationpeut être omis (ne dépendent pas de celui-ci). - Lorsque vous incluez
If-Match: *, DAB effectue uniquement une mise à jour si la ligne existe déjà. Si la ligne est manquante, la requête échoue et404 Not Foundaucune insertion n’est effectuée. Par conséquent, aucun en-tête n’estLocationretourné.