Как должен быть отформатирован ответ JSON? - PullRequest
3 голосов
/ 20 января 2012

У меня есть служба REST, которая возвращает список объектов. Каждый объект содержит objectcode и objectname.

Я впервые строю службу REST, поэтому не знаю, как отформатировать ответ.

Должно ли это быть:

{
    "objects": {
        "count": 2,
        "object": [
            {
                "objectcode": "1",
                "objectname": "foo"
            },
            {
                "objectcode": "2",
                "objectname": "bar"
            },
            ...more objects
        ]
    }
}

OR

 [
    {
        "objectcode": "1",
        "objectname": "foo"
    },
    {
        "objectcode": "2",
        "objectname": "bar"
    },
    ...more objects
]

Я понимаю, что это может быть немного субъективно, но что будет легче потреблять? Мне также потребуется поддержка ответа в формате XML позже.

Ответы [ 4 ]

3 голосов
/ 20 января 2012

Они одинаковы для потребления, поскольку библиотека прекрасно справляется с обоими. Первый из них имеет преимущество перед вторым: вы сможете расширить ответ, включив в него другую информацию, дополнительную к объектам (например, категории), не нарушая существующий код.

Что-то вроде

{
    "objects": {
        "count": 2,
        "object": [
            {
                "objectcode": "1",
                "objectname": "foo"
            },
            {
                "objectcode": "2",
                "objectname": "bar"
            },
            ...more objects
        ]
    }

 "categories": {
  "count": 2,
  "category" : [
     { "name": "some category"}
  ]
  }
}

Кроме того, json не должен форматироваться каким-либо образом, поэтому удаляйте пробелы, разрывы строк и т. Д. Кроме того, счетчик на самом деле не нужен, поскольку он будет сохранен при анализе самих объектов.

2 голосов
/ 20 января 2012

Я часто вижу первый. Иногда проще манипулировать данными, чтобы получить метаданные. Например, для API Google используйте первый: http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true

1 голос
/ 20 января 2012

Это не только вопрос личных предпочтений; это также вопрос ваших требований. Например, если бы я был в той же ситуации и мне нужно было подсчитать количество объектов на стороне клиента, я бы выбрал первый подход, иначе я выберу второй.

Также обратите внимание, что «классический» REST-сервер будет работать немного иначе. Если какая-то функция REST должна возвращать список объектов, она должна возвращать только список URL этим объектам. URL-адреса должны указывать на конечные точки сведений, поэтому, запрашивая каждую конечную точку, вы можете получить сведения о конкретном отдельном объекте.

0 голосов
/ 20 января 2012

Как клиент я бы предпочел второй формат.Если первый формат включает только количество «объектов», это избыточная информация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...