Возвращать JSON вместо XML

187
08 октября 2017, 21:54

Приветствую! Решил написать простой WEB API на С#. Создал тестовую модель данных и контроллер :

public class FlugController : ApiController
{
    Flug[] Flugen = new Flug[] 
    {
        new Flug { IdFlug=1, MarcFlug = "Boeng", JareFlug = "2010" },
        new Flug { IdFlug=2, MarcFlug = "AirLine", JareFlug = "2010" },
        new Flug { IdFlug=3, MarcFlug = "Aero", JareFlug = "2010" },
    };
    public IEnumerable<Flug> GetAllFlug()
    {
        return  Flugen;
    }
    public IHttpActionResult GetFlug(int id)
    {
        Flug FlugByID = Flugen.FirstOrDefault((c)=>c.IdFlug == id);
        if (FlugByID != null)
            return  Ok(FlugByID);
        else return NotFound();
    }
}

Все работает нормально за исключением, того что данные возвращаются в xml формате :

<ArrayOfFlug xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/WebApplication2.Models">
<Flug>
<IdFlug>1</IdFlug>
<JareFlug>2010</JareFlug>
<MarcFlug>Boeng</MarcFlug>
</Flug>
<Flug>
<IdFlug>2</IdFlug>
<JareFlug>2010</JareFlug>
<MarcFlug>AirLine</MarcFlug>
</Flug>
<Flug>
<IdFlug>3</IdFlug>
<JareFlug>2010</JareFlug>
<MarcFlug>Aero</MarcFlug>
</Flug>
</ArrayOfFlug>

В принципе нормально,но xml слишком многословен. Вопрос - как переделать API что бы возвращал данные в JSON ?

Answer 1

Есть такой заголовок - Accept, вы можете его отправить вместе с вашим GET запросом и указать его значение как application/json. Когда WEB.API будет считывать ваш запрос, оно считает в том числе и заголовок, что вы отправили. И если вы ничего сами явно не указывали, то WEB.API будет выдавать ответ в соответствии с тем заголовком, что вы прислали, то есть в виде json.

Если же вы открываете ваш URL просто в браузере, то ваш браузер скорее всего отправляет этот заголовок со значением text\html. Чтобы в браузере увидеть ответ вашего контроллера в json, для asp.net web api надо в конфиге прописать, что мол даже если тип контента запрашивается text\html, то все равно возвращать json. Как это сделать написано тут и тут. В частности, вы можете добавить в конфигурацию вашего приложения следующее

config.Formatters.JsonFormatter.SupportedMediaTypes
    .Add(new MediaTypeHeaderValue("text/html") );
READ ALSO
C#. reportviewer

C#. reportviewer

Помогите пожалуйстаМожно ли в reportviewer после печати отчета с некоторыми скрытыми полями, сделать экспорт всех полей и скрытых тоже? Смысл в чем

169
С# dataGridView violation of parallelism [требует правки]

С# dataGridView violation of parallelism [требует правки]

I organized form where I want to input information about organizationI organized my communication form with database in the following way

189
Как сделать мягкие линии в OpenGL?

Как сделать мягкие линии в OpenGL?

При отрисовке линий у них явно видно как они соскакивают, как рисовать нормально? Чтобы не было острых углов и линии были плавные?

310