Каковы наилучшие методы добавления метаданных в ответ RESTful JSON?

Справочная информация

Мы создают Restful API, который должен возвращать объекты данных как JSON. В большинстве случаев нормально просто вернуть объект данных, но в некоторых случаях, например, f.ex. пагинация или проверка, нам нужно добавить некоторые метаданные в ответ.

Что у нас есть

Мы обернули все ответы json, как в этом примере:

{
    "metadata" :{
        "status": 200|500,
        "msg": "Some message here",
        "next": "http://api.domain.com/users/10/20"
        ...
    },
    "data" :{
        "id": 1001,
        "name": "Bob"
    }
}

Плюсы

  • Мы можем добавить полезные метаданные в ответ

Минусы

  • В большинстве случаев мы этого не делаем требуется поле метаданных, и это добавляет сложности к формату json
  • . Поскольку это больше не объект данных, а больше похоже на обернутый ответ, мы не можем сразу использовать ответ в f.ex backbone.js без извлечения объект данных.

Вопрос

Как лучше всего добавлять метаданные в ответ json?

ОБНОВЛЕНИЕ

Что я получил пока из ответов ниже:

  • Удалите metadata.status вместо этого вернуть код ответа http в протоколе http (200, 500 ...)
  • Добавить сообщение об ошибке в тело ответа http 500
  • Для разбивки на страницы естественно иметь некоторые метаданные рассказывая о структуре разбивки на страницы и данных, вложенных в эту структуру
  • Небольшое количество метаданных может быть добавлено в заголовок http (X-something)
39
задан gprathour 29 November 2011 в 12:09
поделиться