Sdílet prostřednictvím


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í

Scenario 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

Žádost

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

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

Odezva

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íčů

Žádost

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

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

Odezva

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í)

Žádost

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

{
  "title": "Updated Title"
}

Odezva

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

Žádost

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

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

Odezva

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

Žádost

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

{
  "title": "Attempted Update"
}

Odezva

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

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

(Žádná Location hlavička.)

Review

  • 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.