Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 24777|Ответ: 3

[WebAPI] WebAPI настраивает формат возвращаемых данных

[Скопировать ссылку]
Опубликовано 30.11.2017 11:00:16 | | | |
Недавно, при использовании 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
то естьjsontext/html, application/xhtml+xml, */*
Хромxmltext/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,*/*



Продолжайте следующие тесты

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/JSONjson
Приложение/XMLxml
application/xml,application/jsonjson
Приложение/JSON, приложение/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


Как показано ниже:





Предыдущий:Python3 реализует горизонтальные таблицы разбиения с параллельным доступом
Следующий:.Net MVC реализует длинные опросы
Опубликовано 30.11.2017 11:06:08 |
Это удивительно, я сталкивался с такой ситуацией раньше, но не задумывался, почему
 Хозяин| Опубликовано 30.11.2017 11:07:36 |
QWERTYU Опубликовано 2017-11-30 11:06
Это удивительно, я сталкивался с такой ситуацией раньше, но не задумывался, почему

Рекомендуется не поощрять возврат формата XML, поскольку в некоторых случаях возврат формата JSON является нормой, а возвращающий формат XML создаёт исключение

Например, если возвращаемое значение — объектное, то возвращаемый формат JSON является нормальным, и возвращаемый XML-формат сообщает об ошибке
Опубликовано 25.04.2018 8:50:44 |
Лекция очень подробная, и есть пункты знаний, спасибо, они собраны
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com