Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 24777|Yanıt: 3

[WebAPI] WebAPI, dönüş veri formatını özelleştirir

[Bağlantıyı kopyala]
Yayınlandı 30.11.2017 11:00:16 | | | |
Son zamanlarda, WebAPI kullanıldığında tarayıcı WebAPI'ye erişiyor ve varsayılan olarak XML formatı, bence bu geri dönen veri formatı kullanıcı tarafından özelleştirilebilir olmalı, böylece sunucu XML formatı veya JSON formatını döndürebilir, sunucu kodunu yapılandırmak yerine!



Sunucu kodu yapılandırılabiliyor olsa da, WebAPI'nin orijinal amacının bu olduğunu sanmıyorum.

1. WebAPI varsayılan olarak hangi veri türünü döndürür, json mu yoksa xml mi?
2. WebAPI'nin dönüş verisi türünü nasıl değiştirirler
IE Browser kullanarak verinin JSON formatında olmasını istiyorum, Firefox ve Chrome tarafından döndürülen veri formatı XML olarak sunuluyor, sonra HttpWebRequest ile döndürmenin JSON formatında olmasını istiyorum, merak ettim, neden aynı program, aynı yapılandırma dosyası, neden çıkış veri formatı farklı, varsayılan çıkış json veya xml anlaşılabilse bile, neden farklı tarayıcılar var, çıkış formatı farklı, Biraz araştırmadan sonra nihayet nedenini buldum

Testlerde, IE tarayıcısı kullanılarak duygulanan verilerin json, Firefox ve Chrome kullanıldığında xml olduğu ve http talepleri olduğunda IE'nin Firefox ve Chrome ile karşılaştırıldığında "application/xml" tipinden eksik olduğu tespit edilmiştir. Yani varsayılan json formatı verisi, Firefox ve Chrome ise kabul edilebilir xml türleri gönderir, böylece xml veri döner, ve aşağıdaki IE, Firefox ve Chrome'un istek başlığı


Kabul et sadece İstekler bölümünde görünür

Ne anlama gelir: Tarayıcı tarafında kabul edilebilir medya türü


Örneğin, Accept: text/html, tarayıcının sunucudan gelen gönderi türünü metin/html olarak kabul edebilmesi anlamına gelir; bu genellikle html belgeleri olarak adlandırılır

Sunucu metin/html tipindeki verileri döndüremezse, sunucu 406 hatası vermelidir (kabul edilemez).

Joker kart * herhangi bir türü temsil eder

Örneğin, Kabul Et: */* tarayıcının tüm türleri kullanabileceği anlamına gelir (genellikle tarayıcı bunu sunucuya gönderir)

Örneğin, Accept: text/* tüm metin alt sınıflarının kabul edilebilir olduğu anlamına gelir

Accept, birden fazla farklı ayrım türünü destekleyebilir

Örneğin, Kabul et: audio/*; q=0.2, ses/basik, tarayıcıların ses/temel medya türlerini tercih ettiği anlamına gelir, ancak bu tip yoksa, diğer ses türleri de kullanılabilir

Burada bir q=0.2 görünür; bu, ilişkilendirme derecesini temsil eden bir değerdir ve varsayılan değer birdir; en büyükten en küçüğe doğru düzenlenmiştir

Örneğin, Kabul et: metin/sade; q=0.5, metin/html, metin/x-dvi; q=0.8, text/x-c

Kabul edilebilir tür öncelikleri şunlardır

1) metin/html metin/x-c

2)text/x-dvi

3) metin/sade

q 0-1 arasında bir değerdir, q'nun varsayılan değeri 1'dir ve q=0 kabul edilemez anlamına gelir



Son olarak, test sonuçları:

TarayıcıFormatlamaya dönüş  Kabul Etme Başlığı
yaniJSONmetin/html, uygulama/xhtml+xml, */*
Kromxmltext/html,application/xhtml+xml,application/xml; q=0.9,image/webp,image/apng,*/*; q=0.8
Firefoxxmltext/html,application/xhtml+xml,application/xml; q=0.9,*/*; q=0.8,*/*



Aşağıdaki testlere devam edin

1. Sadece accept:application/json gönderilir ve sonuç json döner.

2. Sadece accept:application/xml gönderilir ve sonuç xml döndürür

3. accept: application/xml ve application/json'u aynı anda gönderin, sonuç json döndürer

4. accept:application/json ve application/xml adreslerini aynı anda gönderirseniz, sonuç json döner.

5. Önceliği değiştirin ve aynı anda application/xml gönderin. q=1.0,application/json; q=0.9 ve sonuç xml döndürdü

Bundan şu sonuca çıkarılabilir:

WebAPI'nin dönüş veri türü, istek başlığının kabulüyle belirlenir ve varsayılan dönüş türü json'dur
1. Ne application/json ne de application/xml yoksa, json verisini döndürün
2. Sadece uygulama/json mevcut olduğunda, json verilerini geri getirin
3. Sadece application/xml mevcut olduğunda, xml veri döner.
4. Aynı anda application/json ve application/json varsa, geri dönen veri tipi ikisinin sırasına göre önemsizdir; ikisi aynı önceliğe sahipse json döner, öncelik farklıysa daha yüksek öncelikli tür döner.



Kafayı kabul etDönüş tipi
Uygulama/JSONJSON
Uygulama/XMLxml
application/xml,application/jsonJSON
application/json,application/xmlJSON
application/xml; q=1.0,application/json; q=1.0JSON
application/xml; q=0.9,application/json; q=0.9JSON
application/xml; q=1.0,application/json; q=0.9xml
application/xml; q=0.9,application/json; q=1.0JSON


Aşağıda gösterildiği gibi:





Önceki:python3 eşzamanlı erişim yatay bölümleme tablolarını uygular
Önümüzdeki:.Net MVC uzun anket uygular
Yayınlandı 30.11.2017 11:06:08 |
Harika, bu durumu daha önce de bulmuştum ama nedenini düşünmemiştim
 Ev sahibi| Yayınlandı 30.11.2017 11:07:36 |
QWERTYU 2017-11-30 tarihinde 11:06 tarihinde yayınlandı
Harika, bu durumu daha önce de bulmuştum ama nedenini düşünmemiştim

Bazı durumlarda JSON formatını geri dönmek normaldir ve XML formatını geri döndürmek istisna oluşturduğundan, XML formatını geri döndürmeyi teşvik etmemek önerilir

Örneğin, döndürme değeri nesne ise, döndürme JSON formatı normaldir ve döndürme XML formatı hata bildirir
Yayınlandı 25.04.2018 08:50:44 |
Ders çok detaylı, bilgi puanları var, teşekkürler, toplandı
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com