Недавно, при использовании WebAPI, браузер обращается к WebAPI, и по умолчанию используется формат XML, я считаю, что этот возвращаемый формат данных должен быть настраиваем пользователем, позволяя серверу возвращать формат XML или JSON, вместо серверного кода для настройки!
Хотя серверный код можно настроить, я не думаю, что это было изначальной целью WebAPI.
1. Какой тип данных по умолчанию возвращает WebAPI — json или xml? 2. Как изменить тип возвратных данных WebAPI Я использую браузер IE, чтобы запросить, чтобы возвращаемые данные были в формате JSON, а формат данных, возвращаемый Firefox и Chrome, — это XML, а затем использую HttpWebRequest, чтобы запросить возврат в формате JSON. Я задумался, почему одна и та же программа, тот же конфигурационный файл, почему формат выходных данных отличается, даже если по умолчанию json или xml можно понять, почему разные браузеры, формат вывода разный, После некоторых исследований я наконец понял причину
После тестирования было установлено, что данные, возвращаемые при использовании браузера IE, являются json, а с Firefox и Chrome — xml, и выяснилось, что IE не обладает типом «application/xml» по сравнению с Firefox и Chrome при выполнении http-запросов. Таким образом, по умолчанию данные в формате json, в то время как Firefox и Chrome отправляют приемлемые типы xml, поэтому возвращаются xml-данные, и ниже приведён заголовок запроса IE, Firefox и Chrome
Accept появляется только в разделе Requests
Что это значит: тип медиа, который приемлем на стороне браузера
Например, Accept: text/html означает, что браузер может принимать тип постбэка с сервера как text/html, что обычно называют html-документами
Если сервер не может вернуть данные типа text/html, сервер должен вернуть ошибку 406 (недопустимо)
Джокер-карта * представляет любой тип
Например, Accept: */* означает, что браузер может обрабатывать все типы (обычно браузер отправляет данные серверу)
Например, Accept: text/* означает, что все подклассы текста допустимы
Accept может поддерживать несколько типов разделений
Например, Принять: audio/*; Q=0.2, Audio/Basic означает, что браузеры предпочитают аудио/базовые типы медиа, но если у них нет такого типа, можно использовать и другие типы аудио
Здесь появляется q=0.2, что является значением, отражающим степень ассоциации, а по умолчанию значение — единица, расположенное от наибольшего к наименьшему
Например, Accept: text/plain; q=0.5, текст/html, текст/x-dvi; q=0,8, текст/x-c
Допустимые приоритеты типов следующие
1) текстовый/html-текст/x-c
2)text/x-dvi
3) текст/обычный
q — это значение от 0 до 1, значение q по умолчанию равно 1, а q=0 означает неприемлемо
Наконец, результаты тестов:
| Обозреватель | Возвращение к форматированию | Заголовок запроса accept | | то есть | json | text/html, application/xhtml+xml, */* | | Хром | xml | text/html,application/xhtml+xml,application/xml; q=0.9,image/webp,image/apng,*/*; q=0.8 | | Firefox | xml | text/html,application/xhtml+xml,application/xml; q=0,9,*/*; q=0.8,*/* |
Продолжайте следующие тесты
1. Отправляется только accept:application/json, и результат возвращается в json
2. Отправляется только accept:application/xml, а результат возвращает xml
3. Отправьте accept: application/xml и application/json одновременно, и результат возвращает json
4. Отправьте accept:application/json и application/xml одновременно, и результат возвращает json
5. Изменить приоритет и одновременно отправить приложение/xml. q=1.0,application/json; q=0.9, и результат возвращал XML
Из этого можно сделать следующий вывод:
Тип возвратных данных WebAPI определяется заголовком запроса accept, а тип возврата по умолчанию — json 1. Если ни приложение/json, ни application/xml не существуют, возвращайте данные json 2. Когда доступны только application/json, возвращайте json данные 3. Когда доступен только application/xml, xml-данные возвращаются 4. Когда одновременно присутствуют application/json и application/json, возвращаемый тип данных не имеет значения для их порядка; если у них одинаковый приоритет, json возвращается, а если приоритет разный, тип с более высоким приоритетом возвращается
| Примите голову | Тип возврата | | Application/JSON | json | | Приложение/XML | xml | | application/xml,application/json | json | | Приложение/JSON, приложение/XML | json | | application/xml; q=1.0,application/json; q=1.0 | json | | application/xml; q=0.9,application/json; q=0,9 | json | | application/xml; q=1.0,application/json; q=0,9 | xml | | application/xml; q=0.9,application/json; q=1.0 | json |
Как показано ниже:
|