2015-06-08 6 views
18

Я думаю об использовании стандарта JSONAPI для дизайна нашего API. Одна вещь, которую должен иметь этот API, - принять составной документ (несколько слоев) и создать его. Корневой объект владеет всеми потомками (отношения «to-many»), которые сервер ничего не знает об этом, поэтому клиент не может предоставить идентификатор.Как создать составные документы?

Поддерживается ли это спецификацией или клиент должен самостоятельно отправлять HTTP-запросы для каждого объекта в документе?

ответ

5

от http://jsonapi.org/format/#document-compound-documents

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

{ 
    "data": [{ 
    "type": "articles", 
    "id": "1", 
    "attributes": { 
     "title": "JSON API paints my bikeshed!" 
    }, 
    "links": { 
     "self": "http://example.com/articles/1" 
    }, 
    "relationships": { 
     "author": { 
     "links": { 
      "self": "http://example.com/articles/1/relationships/author", 
      "related": "http://example.com/articles/1/author" 
     }, 
     "data": { "type": "people", "id": "9" } 
     }, 
     "comments": { 
     "links": { 
      "self": "http://example.com/articles/1/relationships/comments", 
      "related": "http://example.com/articles/1/comments" 
     }, 
     "data": [ 
      { "type": "comments", "id": "5" }, 
      { "type": "comments", "id": "12" } 
     ] 
     } 
    } 
    }], 
    "included": [{ 
    "type": "people", 
    "id": "9", 
    "attributes": { 
     "first-name": "Dan", 
     "last-name": "Gebhardt", 
     "twitter": "dgeb" 
    }, 
    "links": { 
     "self": "http://example.com/people/9" 
    } 
    }, { 
    "type": "comments", 
    "id": "5", 
    "attributes": { 
     "body": "First!" 
    }, 
    "links": { 
     "self": "http://example.com/comments/5" 
    } 
    }, { 
    "type": "comments", 
    "id": "12", 
    "attributes": { 
     "body": "I like XML better" 
    }, 
    "links": { 
     "self": "http://example.com/comments/12" 
    } 
    }] 
} 
+2

Это предполагает, что вы знаете, идентификаторы ресурсов вы создаете, чтобы положить в отношения и включены документы. Хотя, я полагаю, вы могли бы дать особое значение неизвестным идентификаторам и создать сервер. – Rob