Должны ли разреженные поля не показывать составные документы? - PullRequest
0 голосов
/ 29 марта 2020

Учитывая следующее:

GET http://www.example.com/post/1?include=author

{
  "type": "post",
  "id": "1",
  "attributes": {
    "title": "It's a title.",
    "description": "It's a description."
  },
  "relationships": {
    "author": {
      "links": {
        "self": "http://example.com/articles/1/relationships/author",
        "related": "http://example.com/people?filter[article]=1"
      },
      "data":{
        "type":"people", "id":"9"
      }
    }
  },
  "included":[
    {
      "type":"people",
      "id": "9",
      "attributes": {
        "first-name": "Dan",
        "last-name": "Gebhardt",
        "twitter": "dgeb"
      },
      "links": {
        "self": "http://example.com/people/9"
      }
    }
  ],
  "links": {
    "self": "http://example.com/articles/1"
  }
}

Если я добавлю fields[post]=title, (то есть GET http://www.example.com/post/1?include=author&fields[post]=title), должно ли это препятствовать отображению included (составной документ)?

GET http://www.example.com/post/1?include=author&fields[post]=title

{
  "type": "post",
  "id": "1",
  "attributes": {
    "title": "It's a title.",
  },
  "relationships": {
    "author": {
      "links": {
        "self": "http://example.com/articles/1/relationships/author",
        "related": "http://example.com/people?filter[article]=1"
      },
      "data":{
        "type":"people", "id":"9"
      }
    }
  }
}

Или составные документы все еще должны отображаться?

1 Ответ

0 голосов
/ 24 апреля 2020

Разреженные наборы полей и Составные документы могут использоваться вместе. Спецификация c явно перечисляет разреженные наборы полей как единственный допустимый случай, когда включенный ресурс не может быть связан другим другим ресурсом в том же документе:

** Составные документы **

Составные документы требуют «полной связи», что означает, что каждый включенный ресурс ДОЛЖЕН быть идентифицирован по крайней мере одним объектом идентификатора ресурса в том же документе. Эти объекты идентификатора ресурса могут быть либо первичными данными, либо представлять связь ресурсов, содержащуюся в первичных или включенных ресурсах.

Единственное исключение из требования полной связи - это когда поля отношений, которые в противном случае содержали бы данные связи, исключались посредством разреженных наборов полей.

Чтобы прямо ответить на ваш вопрос: запасной набор полей должен влиять только на связь между ресурсами (например, не включая поле отношений между ними), но не должен вызывать not * ресурс 1016 * включено, что в противном случае было бы.

...