2014-12-29 5 views
1

Какова лучшая практика использования прагматичных ненавистей, когда объект POST может отличаться от объекта GET того же ресурса? Например, будет ли плохой дизайн API?Дизайн объекта HATEOAS API

  1. Для ресурса /families клиент может создать новую семью и включает в себя много "members":[] в том же запросе.

  2. /members также ресурс

  3. Учитывая успешный POST или GET, сервер возвращает объект, который включает в себя различные "семьи" объект включить ссылки:

    { 
    "id": 123, 
    "name": "The Adams Family", 
    "_links": { 
    "members": { "href": "/families/123/members" } 
    } 
    

ответ

0

I подумайте, что было бы лучше использовать вложенные ресурсы в этом случае, например в HAL + JSON:

{ 
    "id": 123, 
    "name": "The Adams Family", 
    "_embedded": { 
     "members": { 
      "_links": { 
       "self": { 
        "href": "/families/123/members" 
       } 
      } 
     } 
    } 
} 

Я думаю, что ваше решение хорошо, как хорошо, но вы должны определить члены связать соотношение в документации, поэтому клиенты (и их разработчиков) будут знать, что «члены» означает семью членов, а не, например, членов какой-либо коллекции (например, hydra определяет свойство-член для элементов коллекции, а schema.org определяет свойство членов для членов организации).