Пустой разреженный набор полей в JSON API

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

{
  "links": {
    "self": "http://example.com/posts/1?xxx",
  },
  "data": [{
    "type": "posts",
    "id": "1",
    "attributes": {
      "title": "JSON API paints my bikeshed!"
    },
    "relationships": {
      "comments": {
        "links": {
          "self": "http://example.com/posts/1/relationships/comments",
          "related": "http://example.com/posts/1/comments"
        },
        "data": [
          { "type": "comments", "id": "5" },
          { "type": "comments", "id": "12" }
        ]
      }
    },
    "links": {
      "self": "http://example.com/posts/1"
    }
  }],
  "included": [{
    "type": "comments",
    "id": "5",
    "links": {
      "self": "http://example.com/comments/5"
    }
  }, {
    "type": "comments",
    "id": "12",
    "links": {
      "self": "http://example.com/comments/12"
    }
  }]
}

Мой вопрос: как должен выглядеть URL-адрес запроса?

Моя идея заключалась бы в том, чтобы включить комментарии, а затем использовать пустой разреженный набор полей, чтобы избежать получения каких-либо полей комментариев, а только ссылку на себя (+id, тип). Следовательно, это должно выглядеть примерно так http://example.com/posts/1?include=comments&fields[comments]=[]. Поэтому мне нужно что-то вроде пустого разреженного набора полей.

Спецификация API JSON мало говорит о разреженных наборах полей (http://jsonapi.org/format/#fetching-sparse-fieldsets) и их связь со ссылками.


person Philipp Mitterer    schedule 10.06.2015    source источник


Ответы (1)


JSON API смог ответить на мой вопрос.

Короче говоря, правильный способ указать пустой разреженный набор полей:

http://example.com/posts/1?include=comments&fields[comments]=

Идет обсуждение того, следует ли включать ссылки к отдельным элементам отношения в объекте отношения:

{
  "links": {
    "self": "http://example.com/posts/1",
  },
  "data": [{
    "type": "posts",
    "id": "1",
    "attributes": {
      "title": "JSON API paints my bikeshed!"
    },
    "relationships": {
      "comments": {
        "links": {
          "self": "http://example.com/posts/1/relationships/comments",
          "related": "http://example.com/posts/1/comments",
          "item": [ "http://example.com/comments/5", "http://example.com/comments/12" ]
        },
        "data": [{
           "type": "comments", 
           "id": "5", 
           "links": {
              "about": "http://example.com/comments/5"
            }
        }, {
           "type": "comments", 
           "id": "12", 
           "links": {
              "about": "http://example.com/comments/12"
            }
        }] 
      }
    },
    "links": {
      "self": "http://example.com/posts/1"
    }
  }]
}
person Philipp Mitterer    schedule 22.06.2015