Скажем, я хочу иметь ресурс 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
не кажется хорошей идеей, так как идентификатор создается клиентом.
Каковы общие шаблоны и способы их решения? Идентификаторы только в местоположении кажутся наиболее догматически правильным способом, но это также затрудняет практическую реализацию.