Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 24777|Jawab: 3

[WebAPI] WebAPI menyesuaikan format data pengembalian

[Salin tautan]
Diposting pada 30/11/2017 11.00.16 | | | |
Baru-baru ini, saat menggunakan WebAPI, browser mengakses WebAPI, dan defaultnya adalah format XML, saya pikir format data yang dikembalikan ini harus dapat disesuaikan oleh pengguna, memungkinkan server untuk mengembalikan format XML atau format JSON, alih-alih kode server untuk dikonfigurasi!



Meskipun kode server dapat dikonfigurasi, saya tidak berpikir itu adalah niat awal WebAPI.

1. Jenis data apa yang dikembalikan WebAPI secara default, json atau xml?
2. Cara memodifikasi tipe data pengembalian WebAPI
Saya menggunakan browser IE untuk meminta agar data yang dikembalikan dalam format JSON, dan format data yang dikembalikan oleh Firefox dan Chrome adalah XML, dan kemudian saya menggunakan HttpWebRequest untuk meminta pengembalian adalah format JSON, saya bertanya-tanya, mengapa program yang sama, file konfigurasi yang sama, mengapa format data keluaran berbeda, bahkan jika Anda default output json atau xml dapat dipahami, mengapa ada browser yang berbeda, format outputnya berbeda, Setelah beberapa penelitian, saya akhirnya menemukan alasannya

Setelah pengujian, ditemukan bahwa data yang dikembalikan dengan menggunakan browser IE adalah json, sedangkan menggunakan Firefox dan Chrome adalah xml, dan ditemukan bahwa IE tidak memiliki tipe "application/xml" dibandingkan dengan Firefox dan Chrome ketika permintaan http terjadi. Jadi defaultnya adalah data format json, sedangkan Firefox dan Chrome mengirimkan jenis xml yang dapat diterima, sehingga data xml dikembalikan, dan berikut ini adalah header permintaan IE, Firefox, dan Chrome


Terima hanya muncul di Permintaan

Apa artinya: Jenis media yang dapat diterima di sisi browser


Misalnya, Accept: text/html berarti browser dapat menerima jenis postback dari server sebagai text/html, yang biasa disebut sebagai dokumen html

Jika server tidak dapat mengembalikan data jenis text/html, server harus mengembalikan kesalahan 406 (tidak dapat diterima)

Wildcard * mewakili jenis apa pun

Misalnya, Terima: */* berarti bahwa browser dapat menangani semua jenis, (umumnya browser mengirimkannya ke server)

Misalnya, Terima: text/* berarti semua subkelas teks dapat diterima

Terima dapat mendukung beberapa jenis pemisahan

Misalnya, Terima: audio/*; Q=0.2, audio/basic adalah efek bahwa browser lebih menyukai jenis audio/media dasar, tetapi jika mereka tidak memiliki jenis ini, jenis audio lain juga dapat digunakan

Di sini muncul q=0.2, yang merupakan nilai yang mewakili tingkat asosiasi, dan nilai defaultnya adalah satu, disusun dari terbesar ke terkecil

Misalnya, Terima: teks/biasa; q = 0,5, teks / html, teks / x-dvi; q = 0.8, teks / x-c

Prioritas jenis yang dapat diterima adalah sebagai berikut

1) teks / teks html / x-c

2) teks / x-dvi

3) teks / polos

q adalah nilai antara 0-1, nilai default q adalah 1, dan q = 0 berarti tidak dapat diterima



Akhirnya, hasil tes:

perambanKembali ke pemformatan  Terima Header Permintaan
yaitujsonteks/html, aplikasi/xhtml+xml, */*
Chromexmlteks/html, aplikasi/xhtml+xml, aplikasi/xml; q = 0,9, gambar / webp, gambar / apng, * / *; q = 0,8
Firefoxxmlteks/html, aplikasi/xhtml+xml, aplikasi/xml; q = 0,9,*/*; q = 0,8,*/*



Lanjutkan dengan pengujian berikut

1. Hanya menerima: aplikasi/json yang dikirim, dan hasilnya dikembalikan json

2. Hanya accept:application/xml yang dikirim, dan hasilnya mengembalikan xml

3. Kirim accept: application/xml dan application/json secara bersamaan, dan hasilnya mengembalikan json

4. Kirim accept:application/json dan application/xml secara bersamaan, dan hasilnya mengembalikan json

5. Ubah prioritas dan kirim aplikasi/xml secara bersamaan. q = 1.0, aplikasi / json; q=0.9, dan hasilnya mengembalikan xml

Dari sini dapat disimpulkan:

Jenis data pengembalian WebAPI ditentukan oleh penerimaan header permintaan, dan jenis pengembalian default adalah json
1. Jika tidak ada application/json atau application/xml, kembalikan data json
2. Ketika hanya aplikasi/json yang tersedia, kembalikan data json
3. Ketika hanya aplikasi/xml yang tersedia, data xml dikembalikan
4. Ketika ada application/json dan application/json pada saat yang sama, tipe data yang dikembalikan tidak relevan dengan urutan keduanya, jika keduanya memiliki prioritas yang sama, json dikembalikan, dan jika prioritasnya berbeda, jenis dengan prioritas lebih tinggi dikembalikan



Terima kepalaJenis pengembalian
Aplikasi/JSONjson
aplikasi/xmlxml
Aplikasi/XML, Aplikasi/JSONjson
aplikasi/json,aplikasi/xmljson
aplikasi/xml; q = 1.0, aplikasi / json; q = 1,0json
aplikasi/xml; q = 0.9, aplikasi / json; q = 0,9json
aplikasi/xml; q = 1.0, aplikasi / json; q = 0,9xml
aplikasi/xml; q = 0.9, aplikasi / json; q = 1,0json


Seperti yang ditunjukkan di bawah ini:





Mantan:Python3 mengimplementasikan tabel partisi horizontal akses bersamaan
Depan:.Net MVC menerapkan polling panjang
Diposting pada 30/11/2017 11.06.08 |
Sungguh menakjubkan, saya menemukan situasi ini sebelumnya, tetapi saya tidak berpikir mengapa
 Tuan tanah| Diposting pada 30/11/2017 11.07.36 |
QWERTYU Dipaparkan pada 2017-11-30 11:06
Sungguh menakjubkan, saya menemukan situasi ini sebelumnya, tetapi saya tidak berpikir mengapa

Disarankan untuk mencegah pengembalian format XML karena, dalam beberapa kasus, mengembalikan format JSON adalah normal dan mengembalikan format XML melemparkan pengecualian

Misalnya, jika nilai yang dikembalikan adalah objek, format JSON yang ditampilkan adalah normal, dan format XML yang dikembalikan akan melaporkan kesalahan
Diposting pada 25/04/2018 08.50.44 |
Ceramahnya sangat detail, dan ada poin pengetahuan, terima kasih, sudah dikumpulkan
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com