6 Soru: JSON bir REST API tarafından döndürülüyorsa hangi MIME tipi?

tarafından oluşturulan soru Sat, May 11, 2013 12:00 AM

REST API’m JSON’u döndürür.

Şu anda MIME türü olarak text /plain döndürüyorum, ancak komik geliyor. application/x-javascript veya başka bir tür mü iade etmeli miyim?

İkinci soru, hata durumları için HTTP durum koduyla ilgilidir. REST API’m bir hata durumu döndürüyorsa, JSON olarak dönüyorum

 
{ result: "fail", errorcode: 1024, errormesg: "That sucked. Try again!" }

HTTP durum kodu 200 OK'da kalmalı mı?

    
66
  1. Buna verilen tüm cevaplar bir tarayıcının dahil olduğunu varsayıyor gibi görünüyor. REST uygulamam, json mesajlarını gönderir ve cevaplar. Tüm seri hale getirme ve seri hale getirme dahili olarak istemci ve sunucu tarafından yapılır. Üçüncü taraf tarayıcıların hiçbiriyle ilgisi yoktur, hepsi kamuya açık olmayan makinelere özeldir. Bu durumda "application /whatever_type" sıfır fark yaratır, hepsi metindir. "application /json", verilerin json olduğunu, ancak yalnızca yorum niteliğinde olduğunu güçlendirir ve bu zaten API ile çalışan herkesin bildiği ilk şeydir.
    2017-02-08 15: 32: 03Z
  2. @ mickeyf - Tarayıcıların HTTP protokolünü desteklemesi, M2M uygulamalarının desteklememesi gerektiği anlamına gelmez. Kabul Et ve İçerik Türü başlıklarını desteklemeyen bir uygulama yazmak istiyorsanız ( tools.ietf.org/html/rfc7231#section-3.1.1.5 ) bunu yapmakta özgürsünüz, ancak diğer M2M geliştiricileri standart olarak birden fazla medya türünü (örneğin, uygulama /cbor) desteklemek isteyebilir şekilde.
    2018-06-25 21: 08: 32Z
6 Yanıtlar                              6                         

JSON özelliği application/json’u önermektedir ve bu durum IETF ve IANA kayıt defteri.

İkinci soruda, mesaj işleme bir şekilde başarısız olursa, yapılandırılmış ve standart bir hata yanıtını bir JSON mesajı olarak döndürmeniz gerektiğini düşünüyorum; Ancak, mesajı bir nedenle arka uç işleyicisine iletemediyseniz, bir HTTP hata kodu düşünmelisiniz.

Güncelleme 2014-06-27 : Müşterilerin (tarayıcıların) yalnızca 200 yanıtla çalıştığı günler geçmişte kaldı ve RESTful API'ler için geçerli olan öneriler yanıt için uygun HTTP yanıt kodlarını kullanmaktır. , Başarılı yanıtlar için 2xx (örn. 201 PUT için Oluşturuldu; 204 DELETE için İçerik Yok) ve API'nin kendisi de dahil olmak üzere tüm hata koşulları için 4xx ve 5xx.

    
77
2014-06-27 20: 57: 10Z
  1. JSON özelliklerine bağlantı için teşekkür ederiz. Başka bir MIME türüne "text /x-json" işaret eden başka bir stackoverflow sorusu buldum. Aradaki farkın ne olduğundan emin değilim. stackoverflow.com/questions/95554/…
    2009-01-01 03: 38: 57Z
  2. Pratik nedenlerden dolayı (örneğin, Flex'in karışımdaki korkunç HTTP istemcisine sahip olduğunuzu söyleyin), bazen her şey için 200 kullanmanız gerekir. Ancak, normal koşullar altında, durum için en uygun HTTP durum kodunu kullanmak istersiniz.
    2009-10-31 05: 08: 24Z
  3. @ ashitaka: Bu soru özellikle JSON'un text /x-json'a nasıl ayarlanacağını soruyor. JSON için doğru ortam türü olduğuna dair hiçbir iddiada bulunmaz.
    2011-05-25 18: 50: 17Z
19
2011-05-25 08: 39: 06Z

Hem HTTP hata durumu hem de uygulamaya özel yük ile cevap vermeyi tercih ederim.

    
10
2009-05-31 18: 13: 35Z
  1. David'in SO bıraktığı görülüyor, ancak başka biri yukarıdaki ifadeyi destekleyebilir ve bazı argümanlar getirebilir, bunun neden iyi (ya da kötü) bir uygulamadır? Yukarıdaki Software Monkey'in cevabına göre, geçerli bir JSON yanıtı içeren bir HTTP hatası döndürmenin yanlış bir fikir olduğunu görüyorum. Sunucu, yalnızca gerçek bir hata varsa, HTTP hatasını geri göndermelidir.
    2013-12-18 10: 00: 01Z

Hayır, hata durumunda 200 döndürmemelisiniz.

Durum kodunu tekrarlamak ya da yanıt yüküne daha ayrıntılı bir hata kodu eklemek sorun değil.

    
10
2011-05-25 09: 25: 03Z

MIME'yi kaydeden RFC 4627 'ye göre, geri dönüş için uygun Content-type, application/json’dur. IANA yazın (ve gerçekten de, IANA sayfasında görünür). Elbette, bir müşteri yazarsanız, kabul ettiğiniz konuda daha liberal olmak ve ayrıca text/json ve text/x-json gibi başkalarını kabul etmek istersiniz.

Şimdi, bir hata varsa, HTTP 200’ü geri döndürmemelisiniz, bu temelde RESTful değildir. Bazen hatanızla tam bir eşleşme olmadığını biliyorum, ancak RFC 2616 Bölüm 10.4 -10.5 ve JSON'da daha kesin olun.

    
6
2011-08-01 19: 15: 24Z

"REST API" ile, bir REST mimarisini takip etmek istediğinizi kastediyorsanız, kullanılacak ortam tipi, REST API'sinde göstermek istediğiniz işlevsellik tarafından belirlenir. Yeni nesneler yaratabilmek ister misiniz? Nesnelerin listesini sorgula? Bir nesneyi düzenle? Öyleyse, kullanmak için iyi bir RESTful medya türü vnd.collection + json olabilir, çünkü json nesneleri koleksiyonunu değiştirmek için köprü metni bağlantılı bir arabirim tanımlar.

Not: Bir RESTful API, uygulama /json ortam türünü kullanabilir, ancak bu ortam türünde bir köprü metni bağlantılı RESTful arayüzü yoktur, bu nedenle durum değişikliğinde bir son nokta olacaktır.

Ayrıca, HTTP RPC'nin return uygulama /json nesnelerini çağırdığı ve diğer HTTP RPC çağrılarının bu nesneleri manipüle ettiği ve durum değişikliklerini kullanmak ve yönlendirmek için köprü metni bağlantı arabirimi bulunmayan bir web API mimarisini takip etmek de tamamen kabul edilebilir. Ancak bu REST değil.

REST'in bu tanımını beğendim (REST'in yaratıcısından):

REST APIS, köprülenmeli olmalı

  

Başka bir deyişle, eğer uygulama durumunun motoru (ve dolayısıyla API)   köprü metni tarafından yönlendirilmiyor, RESTful olamaz ve olamaz   bir REST API'sı olun. Dönem.

Ayrıca, bu yazının tartışmasından RESTful bir uygulama örneği budur: Kayıp Erkek Çocuk Spam-E REST Uygulaması

    
1
2018-03-06 04: 35: 35Z
kaynak yerleştirildi İşte