Bir REST insert için uygun yanıt - tam yeni kayıt mı yoksa sadece kayıt kimliği değeri mi?


15

Ekler (POST, idempotent değil) ve güncellemeler (PUT, idempotent) uygulama eklemek / veritabanı güncellemek için istekleri sağlayan bir REST API inşa ediyorum.

Bir POST (insert) işlemi için yanıt olarak istemciye hangi verileri geri gönderdiğimizle ilgili herhangi bir standart veya en iyi uygulama olup olmadığını merak ediyorum. En az bir kayıt kimliği değeri geri göndermemiz gerekiyor (örn. Yeni kaydınız # 1234 kaydı).

Tam nesneye cevap vermeli miyiz? (örneğin, bir "GET / object_type / 1234" isteğinden aldıkları yanıtın aynısı)

Sadece yeni kimlik değeri ile cevap vermeli miyiz? (örn. "{id: 1234}", yani tüm kaydı getirmek istiyorlarsa tam kaydı almak için ek bir HTTP GET isteği yapmak zorunda kalırlar)

Tüm nesnenin URL'sini gösteren bir yönlendirme başlığı mı?

Tamamen başka bir şey mi?


Ben en iyi uygulama hakkında oot eminim ama şahsen benim için ben muhtemelen sadece aksi takdirde -1 vb eğer yeni oluşturulan kimliği dönen düşünecektim Başkalarının ne olsa görmek ilginizi
çekiyor

Yanıtlar:


13

Peki, mümkün olan her yerde HTTP'yi takip eden bir REST arayüzünde, Konum başlığı alanındaki 201 ve bir URI'yi yeni oluşturulan Kaynağa döndürürdüm. İşte budur Durum Kodu Tanımları diyor ki:

10.2.2 201 Oluşturuldu

İstek yerine getirildi ve yeni bir kaynak yaratıldı. Yeni oluşturulan kaynağa, Yanıt başlığı alanında döndürülen URI (ler) tarafından başvurulabilir ve bir Konum başlığı alanı tarafından verilen kaynak için en spesifik URI değeri kullanılabilir. Yanıt, kullanıcı veya kullanıcı aracısının en uygun olanını seçebileceği kaynak özelliklerinin ve konumlarının listesini içeren bir varlığı içermelidir. Varlık biçimi, İçerik Türü üstbilgisi alanında verilen ortam türüne göre belirtilir. Kaynak sunucu 201 durum kodunu döndürmeden önce kaynağı OLMALIDIR. İşlem hemen gerçekleştirilemezse, sunucu bunun yerine 202 (Kabul Edildi) yanıtı ile yanıt vermelidir.

Bir şeyler ters giderse, -1başkalarının söylediği gibi geri dönmemeniz gerektiğini iddia ederdim , sadece bir İstemci veya Sunucu Hata Kodu (4xx veya 5xx). Örneğin, bir kullanıcının yeni bir kaynak oluşturmasına izin verilmezse, "401 Yetkisiz" i döndürürsünüz, daha fazla ve daha az bir şey döndürmezsiniz.


Beden ne olacak? boş veya yanıt olarak yeni oluşturulan nesnenin tamamı?
Geliştirici

Bildiğim iki yaygın seçenek 1) konum başlığının yeni varlığın bulunabileceği yere ayarlanması veya 2) gövdede yeni varlığın dahil edilmesidir. Ben şahsen ikincisiyle pratik nedenlerden dolayı gidiyorum. Somtimes daha rahat bir his için birleşti;)
Bruno Schäpper
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.