Hlavička odpovědi na umístění v operaci vytvoření REST

V případě koncových bodů REST hlavička Location odpovědi informuje klienty, kde mají načíst nově vytvořený prostředek. Data API Builder (DAB) vrací Location vložení POST . Pro PUT nebo PATCH upserty, které vytvářejí nové řádky, může být záhlaví vynecháno.

Když DAB nastaví hlavičku Umístění

Scénář Kód stavu Záhlaví umístění (aktuální chování)
POST vytvoří nový řádek (tabulku). 201 Vytvořeno Prezentovat: segmenty cesty primárního klíče, například id/123categoryid/3/pieceid/1.
POST spustí uloženou proceduru vracející nové řádky. 201 Vytvořeno Existuje, pokud je možné odvodit PK; může být prázdný, když to nejde.
PUT Upsert aktualizuje existující řádek. 200 OK Není k dispozici
PUT Upsert vloží nový řádek (bez If-Match) 201 Vytvořeno Může se vynechat; nespoléhejte na Location
PATCH Upsert aktualizuje existující řádek. 200 OK Není k dispozici
PATCH Upsert vloží nový řádek (bez If-Match) 201 Vytvořeno Může se vynechat; nespoléhejte na Location
PUT / PATCHchybí řádek a s If-Match: * 404 Nenalezena Není k dispozici
Všechny aktualizace (řádek existoval) 200 OK Není k dispozici

Chování

  • Složené primární klíče se zobrazují jako uspořádané segmenty, například book_id/1/id/5001categoryid/3/pieceid/1.
  • Mapování názvů sloupců (aliasů) používají názvy polí vystavených rozhraním REST v cestě.

Příklad: POST vytvoření nové položky

Prosba

POST /api/Books
Content-Type: application/json

{
  "title": "New Book",
  "publisher_id": 42
}

odpověď

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
}

Klient teď GET http://localhost:50246/api/Books/id/123může .

Příklad: VLOŽENÍ POST do tabulky složených klíčů

Prosba

POST /api/Inventory
Content-Type: application/json

{
  "categoryid": 3,
  "pieceid": 1,
  "categoryName": "SciFi"
}

odpověď

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"
}

Příklad: AKTUALIZACE existujícího řádku PUT (bez umístění)

Prosba

PUT http://localhost:50246/api/Books/id/1
Content-Type: application/json

{
  "title": "Updated Title"
}

odpověď

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 1,
  "title": "Updated Title"
}

(Žádná Location hlavička.)

Příklad: VLOŽENÍ nového řádku

Prosba

PUT http://localhost:50246/api/Books/id/500
Content-Type: application/json

{
  "title": "Inserted via PUT",
  "publisher_id": 7
}

odpověď

HTTP/1.1 201 Created
Content-Type: application/json

{
  "id": 500,
  "title": "Inserted via PUT",
  "publisher_id": 7
}

(Location záhlaví může být zde vynecháno.)

Příklad: PUT s chybějícím If-Match a řádkem

Prosba

PUT http://localhost:50246/api/Books/id/500
If-Match: *
Content-Type: application/json

{
  "title": "Attempted Update"
}

odpověď

HTTP/1.1 404 Not Found
Content-Type: application/json

{
  "error": "No Update could be performed, record not found"
}

(Žádná Location hlavička.)

Recenze

  • POST s vytvořením: Location je k dispozici cesta k primárnímu klíči.
  • PUT nebo PATCH s aktualizací: Ne Location.
  • PUT nebo PATCH s vložením: Vrátí 201 Created; Location může být vynecháno (nezávisí na tom).
  • Pokud zahrnete If-Match: *, DAB provede aktualizaci pouze v případě, že řádek již existuje. Pokud řádek chybí, požadavek selže 404 Not Found a neprovádí se vložení, takže se nevrátí žádná Location hlavička.

Poznámka:

Funkce tvůrce rozhraní Data API 2.0 popsané v této části jsou aktuálně ve verzi Preview a můžou se změnit před obecnou dostupností. Další informace najdete v tématu Co je nového ve verzi 2.0.