Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Per gli endpoint REST, l'intestazione della Location risposta indica ai client dove recuperare una risorsa appena creata. Il generatore di API dati (DAB) restituisce Location per POST gli inserimenti. Per PUT o PATCH upsert che creano nuove righe, l'intestazione può essere omessa.
Quando DAB imposta l'intestazione Location
| Scenario | Codice di stato | Intestazione percorso (comportamento corrente) |
|---|---|---|
POST crea una nuova riga (tabella) |
201 Creato | Presente: segmenti di percorso chiave primaria, ad esempio id/123 o categoryid/3/pieceid/1. |
POST esegue la stored procedure che restituisce nuove righe |
201 Creato | Presente se la chiave pubblica può essere derivata; può essere vuoto quando non può. |
PUT upsert aggiorna la riga esistente |
200 Va bene | Non presente |
PUT upsert inserisce una nuova riga (nessuna If-Match) |
201 Creato | Può essere omesso; non fare affidamento su Location |
PATCH upsert aggiorna la riga esistente |
200 Va bene | Non presente |
PATCH upsert inserisce una nuova riga (nessuna If-Match) |
201 Creato | Può essere omesso; non fare affidamento su Location |
PUT
/
PATCH con If-Match: * e riga mancante |
404 Non trovato | Non presente |
| Qualsiasi aggiornamento (riga esistente) | 200 Va bene | Non presente |
Comportamento
- Le chiavi primarie composite vengono visualizzate come segmenti ordinati, ad esempio
book_id/1/id/5001ocategoryid/3/pieceid/1. - I mapping dei nomi di colonna (alias) usano i nomi di campo esposti da REST nel percorso.
Esempio: POST per la creazione di un nuovo elemento
Richiesta
POST /api/Books
Content-Type: application/json
{
"title": "New Book",
"publisher_id": 42
}
Risposta
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
}
Il client può ora GET http://localhost:50246/api/Books/id/123.
Esempio: inserimento POST nella tabella chiave composita
Richiesta
POST /api/Inventory
Content-Type: application/json
{
"categoryid": 3,
"pieceid": 1,
"categoryName": "SciFi"
}
Risposta
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"
}
Esempio: PUT aggiorna una riga esistente (nessun percorso)
Richiesta
PUT http://localhost:50246/api/Books/id/1
Content-Type: application/json
{
"title": "Updated Title"
}
Risposta
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 1,
"title": "Updated Title"
}
(Nessuna Location intestazione).
Esempio: PUT che inserisce una nuova riga
Richiesta
PUT http://localhost:50246/api/Books/id/500
Content-Type: application/json
{
"title": "Inserted via PUT",
"publisher_id": 7
}
Risposta
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": 500,
"title": "Inserted via PUT",
"publisher_id": 7
}
(Location l'intestazione può essere omessa qui.
Esempio: PUT con If-Match e riga mancante
Richiesta
PUT http://localhost:50246/api/Books/id/500
If-Match: *
Content-Type: application/json
{
"title": "Attempted Update"
}
Risposta
HTTP/1.1 404 Not Found
Content-Type: application/json
{
"error": "No Update could be performed, record not found"
}
(Nessuna Location intestazione).
Review
-
POST con creazione:
Locationè presente con il percorso della chiave primaria. -
PUT o PATCH con aggiornamento: No
Location. -
PUT o PATCH con insert: restituisce
201 Created;Locationpuò essere omesso (non dipende da esso). - Quando si include
If-Match: *, DAB esegue un aggiornamento solo se la riga esiste già. Se la riga non è presente, la richiesta ha esito negativo404 Not Founde non viene eseguito alcun inserimento, quindi non viene restituita alcunaLocationintestazione.