Что именно возвращает .net core api в браузер?

#json #api #asp.net-core #.net-core #json.net

#json #API #asp.net-core #.net-ядро #json.net #.net-core

Вопрос:

Итак, у меня есть эта конечная точка:

 [HttpGet]
public async Task<ActionResult> Get()
{
   var ext = new ApiExtensions();
   List<Record> records = await ext.GetRecords();    
   return Ok(records);
}
  

Это объект записи:

 public class Record
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string CreatedBy { get; set; }
    public DateTime? DateCreated { get; set; }
    public string LastModifiedBy { get; set; }
    public DateTime? LastModifiedDate { get; set; }
}
  

Просматривая результаты в Fiddler или Postman, я получаю то, что ожидаю увидеть.
Но оба этих инструмента (Fiddler и Postman) дают мне возможность «видеть» данные (body), возвращаемые api, в разных форматах: текст, raw, json, xml и т.д. Итак, что именно API возвращает клиенту? Это просто «необработанные» данные, отображаемые на вкладке raw? Или он возвращает одни и те же данные в разных форматах, и клиент должен использовать правильный?

(Я использую .net Core 3.1.)

Спасибо.

Комментарии:

1. что ж, .netcore, по крайней мере, из 2.2 API, возвращает json по умолчанию, однако вы можете настроить API для возврата xml при запуске. я думаю, что fiddler и postman просто изо всех сил стараются преобразовать JSON в xml, когда вы его выбираете. Если вы заметили, что это неправильный xml, это все равно строка JSON.

Ответ №1:

ASP.NET Core MVC / API поддерживает форматирование данных ответа. Данные ответа могут быть отформатированы с использованием определенных форматов или в ответ на формат, запрошенный клиентом. Встроенный вспомогательный метод Ok возвращает данные в формате JSON:

     [HttpGet]
    public async Task<ActionResult> GetMovie()
    {
        return Ok(await _context.Movie.ToListAsync());
    }
  

Вы можете с помощью инструментов разработчика браузера F12 или Postman проверить отображаемый заголовок ответа content-type: application/json; charset=utf-8 .

введите описание изображения здесь

Более подробную информацию о формате данных ответа см. Формат данных ответа в ASP.NET Основной веб-API.

Но оба этих инструмента (Fiddler и Postman) дают мне возможность «видеть» данные (тело), возвращаемые api в разных форматах: текст, raw, json, xml и т. Д

Что касается формата тела ответа Fiddler и PostMan, я думаю, что это функция инструмента, лучше изменить формат тела ответа.