2013-07-01 2 views
0

Я пытаюсь создать связь между двумя разными ресурсами с зависимостью. Сценарий:REST: Связать ресурсы с зависимостью

Два ресурса, первый из которых называется «учетная запись», а второй - «человек».

В моем API ресурс «человек» является представлением человека в реальном мире с именем, возрастом, полом, адресом, телефоном и т. Д. Учетная запись является ресурсом, ответственным за аутентификацию человека, например, логин.

Так представление «человек» ресурс выглядит, как показано ниже:

{ 
    "id": "7828292", 
    "name": "Joseph Climber", 
    "email": "[email protected]", 
    "gender": "M", 
    "telephones": { 
     "main": { 
      "number": "898987777" 
     }, 
     "secondary": { 
      "number": "909099090" 
     }, 
     "business": { 
      "number": "937363902" 
     } 
    }, 
    "address": { 
         "rel": "address", 
         "href": "person/{ID}/address" 
     } 
} 

И представление «счет» ресурс выглядит как:

{ 
    "id": "[email protected]", 
    "tokenAccess": "5E69FAE25F4B4F3E8CC5DE09A8163520", 
    "link": { 
     "rel": "person", 
     "href": "person/{id}" 
    } 
} 

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

Каков наилучший способ представить эту зависимость между учетной записью и ресурсом пользователя?

+0

Что вы подразумеваете под "аутентификацией нового человека"? Вы говорите о потребителе API? – Botis

ответ

0

Может быть, если кто-то пытается POST к /person без маркера доступа, а затем возвращает код состояния 401 Unauthorized с чем-то вроде тела:

{ 
    "@type": "error", 
    "description": "You must be authenticated to POST to person. If you do not have an account, then POST to /account to get an access token." 
} 

Я полагаю, что было бы достаточно интуитивным для разработчиков, использующих API.

+0

Привет, спасибо за ваш ответ, но я думаю, что таким образом API все еще запутался. Например, другая проблема, с которой я сталкиваюсь: как я могу связать учетную запись с человеком (и наоборот), если процесс создания обоих отличается? – Krock

+0

Не могли бы вы рассказать о том, что вы чувствуете в замешательстве? Если я сделал вызов '/ person', который вернул сообщение об ошибке« Вы должны сначала позвонить/учесть », я бы не нашел это сбивающим с толку - он говорит мне, что именно делать. Это связано с тем, что пользователь не знает об этом заранее, прежде чем совершит вызов? Если да, возможно, вы помещаете что-то в свои документы API. [Swagger] (http://petstore.swagger.wordnik.com/) имеет бесплатный текстовый раздел для каждого вызова API, где вы могли бы объяснить подобные вещи своим пользователям. – theon

Смежные вопросы