Используя более новый ASP.NET Web API , в Chrome я вижу XML - как я могу изменить его для запроса JSON, чтобы я мог просматривать его в браузере? Я действительно считаю, что это только часть заголовков запроса, я прав в этом?
json
google-chrome
asp.net-web-api
naspinski
источник
источник
Ответы:
Я просто добавляю следующее в
App_Start / WebApiConfig.cs
класс в своем проекте MVC Web API .Это гарантирует, что вы получите JSON для большинства запросов, но вы можете получить его
XML
при отправкеtext/xml
.Если вам нужно иметь ответ ,
Content-Type
как ,application/json
пожалуйста , проверьте ответ Тодда ниже .NameSpace
используетSystem.Net.Http.Headers
.источник
Content-Type
заголовок ответа по- прежнему будетtext/html
.Если вы сделаете это в,
WebApiConfig
вы получите JSON по умолчанию, но он все равно позволит вам вернуть XML, если вы передадите заголовокtext/xml
запроса.Accept
Если вы не используете тип проекта MVC и, следовательно, не имеете этого класса для начала, обратитесь к этому ответу для получения подробных сведений о его включении.
источник
application/xml
с приоритетом 0,9 и*/*
приоритетом 0,8. Удаляя,application/xml
вы удаляете возможность для Web API возвращать XML, если клиент запрашивает это специально. Например, если вы отправите «Accept: application / xml», вы все равно получите JSON.Использование RequestHeaderMapping работает даже лучше, поскольку оно также устанавливает
Content-Type = application/json
заголовок ответа, что позволяет Firefox (с надстройкой JSONView) форматировать ответ как JSON.источник
Мне больше нравится подход Фелипе Леусина - убедитесь, что браузеры получают JSON без ущерба для согласования контента от клиентов, которые действительно хотят XML. Единственное, чего мне не хватало, так это того, что заголовки ответов по-прежнему содержали тип содержимого: text / html. Почему это было проблемой? Потому что я использую расширение JSON Formatter Chrome , которое проверяет тип контента, и я не получаю красивое форматирование, к которому я привык. Я исправил это с помощью простого пользовательского средства форматирования, которое принимает запросы text / html и возвращает ответы application / json:
Зарегистрируйтесь так:
источник
this.SerializerSettings.Formatting = Formatting.Indented;
если хотите, красиво напечатанный без расширения браузера.using System.Net.Http.Formatting
иusing Newtonsoft.Json
Совет MVC4 № 3 - Удаление XML Formatter из ASP.Net Web API
В
Global.asax
добавьте строку:вот так:
источник
В файле WebApiConfig.cs добавьте в конец функцию Register :
Источник .
источник
В Global.asax я использую код ниже. Мой URI для получения JSON
http://www.digantakumar.com/api/values?json=true
источник
Посмотрите на согласование контента в WebAPI. Эти ( часть 1 и часть 2 ) удивительно подробные и подробные сообщения в блоге объясняют, как это работает.
Короче говоря, вы правы, и вам просто нужно установить заголовки
Accept
or илиContent-Type
request. Поскольку ваше действие не закодировано для возврата определенного формата, вы можете установитьAccept: application/json
.источник
Поскольку вопрос относится к Chrome, вы можете получить расширение Postman, которое позволяет вам устанавливать тип содержимого запроса.
источник
network.http.accept.default
конфигурации наtext/html,application/xhtml+xml,application/json;q=0.9,application/xml;q=0.8,*/*;q=0.7
.text/html,application/xhtml+xml;q=1.0,*/*;q=0.7
чтобы избежать ошибочного хоста, такого как Bitbucket, от случайного обслуживания вашего браузера JSON вместо HTML.Одним из быстрых вариантов является использование специализации MediaTypeMapping. Вот пример использования QueryStringMapping в событии Application_Start:
Теперь, когда в этом случае URL содержит строку запроса? A = b, ответ Json будет отображаться в браузере.
источник
Этот код делает json моим значением по умолчанию и позволяет мне также использовать формат XML. Я просто добавлю
xml=true
.Спасибо всем!
источник
Не используйте ваш браузер для тестирования вашего API.
Вместо этого попробуйте использовать HTTP-клиент, который позволяет указать ваш запрос, например, CURL или даже Fiddler.
Проблема с этим вопросом в клиенте, а не в API. Веб-API работает правильно, в соответствии с запросом браузера.
источник
Большинство из приведенных выше ответов имеет смысл. Поскольку вы видите, что данные форматируются в формате XML, это означает, что применяется форматер XML, поэтому вы можете увидеть формат JSON, просто удалив XMLFormatter из параметра HttpConfiguration, например
поскольку JSON является форматом по умолчанию
источник
Я использовал глобальный фильтр действий для удаления,
Accept: application/xml
когдаUser-Agent
заголовок содержит «Chrome»:Кажется, работает.
источник
Я нашел приложение Chrome "Advanced REST Client" превосходно для работы со службами REST. Вы можете установить Content-Type
application/json
среди прочего: Расширенный клиент RESTисточник
Возвращение правильного формата выполняется форматером медиа-типа. Как уже упоминалось, вы можете сделать это в
WebApiConfig
классе:Для больше, проверьте:
Если ваши действия возвращают XML (что по умолчанию), и вам нужен только определенный метод для возврата JSON, вы можете использовать
ActionFilterAttribute
и применить его к этому конкретному действию.Атрибут фильтра:
Применение к действию:
Обратите внимание, что вы можете опустить слово
Attribute
на оформлении действия и использовать только[JsonOutput]
вместо[JsonOutputAttribute]
.источник
источник
согласно последней версии ASP.net WebApi 2,
под
WebApiConfig.cs
это будет работатьисточник
Мне непонятно, почему в ответе вся эта сложность. Конечно, есть множество способов сделать это с помощью QueryStrings, заголовков и опций ... но я считаю, что лучшая практика проста. Вы запрашиваете простой URL (ex:)
http://yourstartup.com/api/cars
и в ответ получаете JSON. Вы получаете JSON с правильным заголовком ответа:В поисках ответа на этот же вопрос я нашел эту ветку и должен был продолжать, потому что этот принятый ответ не работает точно. Я нашел ответ, который мне кажется слишком простым, чтобы не быть лучшим:
Установите форматер WebAPI по умолчанию
Я также добавлю свой совет здесь.
У меня есть вопрос о том, откуда берутся настройки по умолчанию (по крайней мере те, которые я вижу). Являются ли они .NET значениями по умолчанию или, возможно, созданы где-то еще (кем-то другим в моем проекте). Надеюсь, это поможет.
источник
Вот решение, похожее на jayson.centeno и другие ответы, но с использованием встроенного расширения from
System.Net.Http.Formatting
.Решение в первую очередь было направлено на поддержку $ format для OData в ранних выпусках WebApi, но оно также применимо к реализации не-OData и возвращает
Content-Type: application/json; charset=utf-8
заголовок в ответе.Это позволяет вам прикрепить
&$format=json
или&$format=xml
до конца URI при тестировании с браузером. Это не мешает другому ожидаемому поведению при использовании клиента без браузера, где вы можете установить свои собственные заголовки.источник
Вы можете использовать как ниже:
источник
Просто добавьте эти две строки кода в свой класс WebApiConfig
источник
Вы просто измените вот
App_Start/WebApiConfig.cs
так:источник
Из MSDN Создание одностраничного приложения с ASP.NET и AngularJS (около 41 минуты).
Это должно быть текущим, я попробовал, и это работало.
источник
Некоторое время прошло с тех пор, как этот вопрос был задан (и получен ответ), но другой вариант - переопределить заголовок Accept на сервере во время обработки запроса с использованием MessageHandler, как показано ниже:
куда
someOtherCondition
может быть что угодно, включая тип браузера и т. Д. Это было бы для условных случаев, когда только иногда мы хотим переопределить согласование содержимого по умолчанию. В противном случае, как и в других ответах, вы просто удалите ненужный форматер из конфигурации.Вы должны будете зарегистрировать это конечно. Вы можете сделать это глобально:
или по маршруту на основе маршрута:
А так как это обработчик сообщений, он будет работать как на концах запроса, так и на конце ответа так же, как и
HttpModule
. Таким образом, вы можете легко подтвердить переопределение с помощью пользовательского заголовка:источник
Вот самый простой способ, который я использовал в своих приложениях. Добавьте приведенные ниже 3 строки кода
App_Start\\WebApiConfig.cs
вRegister
функциюВеб-API Asp.net автоматически сериализует ваш возвращаемый объект в JSON, и, как только
application/json
он добавляется в заголовок, браузер или получатель поймут, что вы возвращаете результат JSON.источник
WebApiConfig - это место, где вы можете настроить, хотите ли вы выводить данные в формате json или xml. по умолчанию это xml. в функции регистра мы можем использовать HttpConfiguration Formatters для форматирования вывода. System.Net.Http.Headers => MediaTypeHeaderValue ("text / html") требуется для получения вывода в формате json.
источник
Используя ответ Фелипе Леусина в течение многих лет, после недавнего обновления основных библиотек и Json.Net я столкнулся с
System.MissingMethodException
: SupportedMediaTypes. Решение в моем случае, которое, надеюсь, поможет другим, столкнувшимся с таким же неожиданным исключением, заключается в установкеSystem.Net.Http
. NuGet, по-видимому, удаляет его при некоторых обстоятельствах. После ручной установки проблема была решена.источник
Я удивлен, увидев так много ответов, требующих кодирования для изменения одного варианта использования (GET) в одном API вместо использования соответствующего инструмента, который должен быть установлен один раз и может использоваться для любого API (собственного или стороннего) и всех остальных. случаи использования.
Итак, хороший ответ:
источник