Скажем, я хочу иметь ресурс RESTful для людей, где клиент может назначить идентификатор.
Человек выглядит так: {"id": <UUID>, "name": "Jimmy"}
Теперь, как клиент должен сохранить (или "PUT" )?
-
PUT /person/UUID {"id": <UUID>, "name": "Jimmy"}- теперь у нас есть это неприятное дублирование, которое мы должны проверять все время: соответствует ли идентификатор в теле тем, что находится в пути? - Асимметричное представление:
-
PUT /person/UUID {"name": "Jimmy"} -
GET /person/UUIDвозвращает{"id": <UUID>, "name": "Jimmy"}
-
- Нет идентификаторов в теле - ID только в местоположении:
-
PUT /person/UUID {"name": "Jimmy"} -
GET /person/UUIDвозвращает{"name": "Jimmy"}
-
- Никакой тип
POSTне кажется хорошей идеей, так как идентификатор создается клиентом.
Каковы общие шаблоны и способы их решения? Идентификаторы только в местоположении кажутся наиболее догматически правильным способом, но это также затрудняет практическую реализацию.