Aracılığıyla paylaş


REST Oluşturma İşlemindeki Konum Yanıt Üst Bilgisi

REST uç noktaları için yanıt üst bilgisi istemcilere Location yeni oluşturulan kaynağı nereden alacaklarını bildirir. Veri API oluşturucusu (DAB), eklemeler için Location döndürürPOST. Yeni satırlar oluşturan veya PUT upsert'ler için PATCH üst bilgi atlanabilir.

DAB Konum üst bilgisini ayarlarken

Scenario Durum Kodu Konum Üst Bilgisi (geçerli davranış)
POST yeni satır oluşturur (tablo) 201 Oluşturuldu Mevcut: birincil anahtar yol kesimleri, örneğin id/123 veya categoryid/3/pieceid/1.
POST yeni satır döndüren saklı yordamı yürütür 201 Oluşturuldu PK türetilebilirse mevcut; kullanılamadığında boş olabilir.
PUT upsert güncelleştirmeleri var olan satır 200 Tamam Yok
PUT upsert yeni satır ekler (If-Matchyok ) 201 Oluşturuldu Atlanabilir; güvenmeyin Location
PATCH upsert güncelleştirmeleri var olan satır 200 Tamam Yok
PATCH upsert yeni satır ekler (If-Matchyok ) 201 Oluşturuldu Atlanabilir; güvenmeyin Location
PUT / PATCH ve If-Match: * satırı eksik 404 Bulunamadı Yok
Herhangi bir güncelleştirme (satır mevcut) 200 Tamam Yok

Davranış

  • Bileşik birincil anahtarlar, örneğin book_id/1/id/5001 veya categoryid/3/pieceid/1sıralı kesimler olarak görünür.
  • Sütun adı eşlemeleri (diğer adlar), yoldaki REST tarafından kullanıma sunulan alan adlarını kullanır.

Örnek: POST yeni öğe oluşturma

İstek

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

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

Yanıt

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
}

İstemci artık GET http://localhost:50246/api/Books/id/123yapabilir.

Örnek: Bileşik anahtar tablosuna POST ekleme

İstek

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

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

Yanıt

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

Örnek: PUT varolan satırı güncelleştiriyor (Konum yok)

İstek

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

{
  "title": "Updated Title"
}

Yanıt

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

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

(Üst bilgi yok Location .)

Örnek: PUT yeni satır ekleme

İstek

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

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

Yanıt

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

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

(Location üst bilgi burada atlanabilir.)

Örnek: If-Match ve satır eksik put

İstek

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

{
  "title": "Attempted Update"
}

Yanıt

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

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

(Üst bilgi yok Location .)

İnceleme

  • Oluşturma ile POST: Location birincil anahtar yolu ile birlikte bulunur.
  • GÜNCELLEŞTIRMEli PUT veya PATCH: Hayır Location.
  • EKLEME ile PUT veya PATCH: Döndürür 201 Created; Location atlanabilir (buna bağlı değildir).
  • eklediğinizde If-Match: *, DAB yalnızca satır zaten varsa bir güncelleştirme gerçekleştirir. Satır eksikse, istek ile 404 Not Found başarısız olur ve ekleme yapılmaz, bu nedenle üst bilgi döndürülür Location .