powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / webapi FW4.8 на NET5
7 сообщений из 7, страница 1 из 1
webapi FW4.8 на NET5
    #40126635
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть приложение с webapi которое используют множество внешних клиентов. в доке к апи описаны варианты работы с
'Content-Type' = 'application/x-www-form-urlencoded'
'Content-Type' = 'application/json'

'Accept' = 'application/xml'
'Accept' = 'application/json'

?..&type=json
?..&type=xml
т.е. все варианты скорее всего используются

переписав на net5, оказалось что работает только json.

'Content-Type' = 'application/x-www-form-urlencoded' победили через [Consumes("application/x-www-form-urlencoded")] и фиксацией точки как десячитного разделителя разрядов в DefaultThreadCurrentCulture

а вот с выводом в xml не могу победить.

как такое на NET5 переписать ?

Код: c#
1.
2.
3.
4.
5.
6.
7.
        config.Formatters.JsonFormatter.MediaTypeMappings.Add(
            new QueryStringMapping("type", "json", new MediaTypeHeaderValue("application/json")));

         config.Formatters.XmlFormatter.UseXmlSerializer = true;
         config.Formatters.XmlFormatter.WriterSettings.OmitXmlDeclaration = false;
         config.Formatters.XmlFormatter.WriterSettings.Indent = true;
         config.Formatters.XmlFormatter.MediaTypeMappings.Add(new QueryStringMapping("type", "xml", new MediaTypeHeaderValue("application/xml")));
...
Рейтинг: 0 / 0
webapi FW4.8 на NET5
    #40127133
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
         services.AddMvc(options =>
         {
            options.FormatterMappings.SetMediaTypeMappingForFormat("xml", "application/xml");
            options.FormatterMappings.SetMediaTypeMappingForFormat("json", "application/json");
            
            options.OutputFormatters.Add(new XmlSerializerOutputFormatter(new XmlWriterSettings()
            {
               OmitXmlDeclaration = false,
               Indent = true
            }));
         }) ;



нашел
только type на format придется менять через urlrewrite
...
Рейтинг: 0 / 0
webapi FW4.8 на NET5
    #40127143
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще не понятно почему стоящий по умолчанию атрибут [ApiController] мешает вызову с 'Content-Type' = 'application/x-www-form-urlencoded'.
выдаёт сразу "title":"Unsupported Media Type","status":415

если его убрать, то начинает работать post метод с [Consumes("application/x-www-form-urlencoded")], пречём параметры сами сериализуются в объект (единственный косяк это числа сериалищуются в зависимости от локали сервера, но это лечится)

вот и думаю, без [ApiController] работают все форматы, а с ним нет, видимо в моём случае он не нужен.
...
Рейтинг: 0 / 0
webapi FW4.8 на NET5
    #40127999
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barrabas,

ApiController означает что у тебя контроллер webapi со своим жизненным циклом.
если его нет то у тебя mvc контроллер с другим жизненным циклом
...
Рейтинг: 0 / 0
webapi FW4.8 на NET5
    #40128032
fkfka2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
monstrU
ApiController означает что у тебя контроллер webapi со своим жизненным циклом.
если его нет то у тебя mvc контроллер с другим жизненным циклом

Зачем выдумывать какие-то выдумки. Один и тот же у них жизненный цикл. Можно ведь просто взять и прочитать , что на самом деле дает добавление атрибута "[ApiController]".
...
Рейтинг: 0 / 0
webapi FW4.8 на NET5
    #40128346
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkfka2,

все таки тут написано что при работа с webapi Controller класс лучше не использовать, а использовать ControllerBase
...
Рейтинг: 0 / 0
webapi FW4.8 на NET5
    #40128644
fkfka2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
monstrU
все таки тут написано что при работа с webapi Controller класс лучше не использовать, а использовать ControllerBase

Из-за того, что в полном Controller много мусора который для Web API не нужен.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / webapi FW4.8 на NET5
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (2): Анонимы (1), Yandex Bot 7 мин.
Пользователи онлайн (11): Анонимы (9), Yandex Bot, CerebroSQL 1 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]