Подобные структуры являются общими с API, которые обертывают все ответы в некоторый объект метаданных.Например, учитывая класс C #:
public class Response<T>
{
string ApplicationMessage { get; set; }
Exception Exception { get; set; }
object Data { get; set; }
}
Всегда возвращая классы, производные от Response<T>
, клиентский код может проверять свойства метаданных, чтобы при необходимости получить дополнительное представление об ответе.
Например, скажем:
Запрос
GET api.com/users/HunorKovács
Ответ
400 Плохой запрос
Тело:
{
"applicationMessage": "Expected a userId, not a username.",
"exception": null,
"data": null
}
В этом случае ApplicationMessage
дает подробные сведения о том, почему был возвращен ответ 400.Исключения могут передаваться для упрощения отладки в средах разработки и т. Д.
Для обычных запросов, в которых нет проблем, вы, скорее всего, увидите только заполненные данные:
Запрос
GET api.com/users/1474495
Ответ
200 ОК
Тело:
{
"applicationMessage": null,
"exception": null,
"data": {
"userId": 1474495,
"fullName": "HunorKovács"
}
}