При разработке RESTful API мы столкнулись с проблемой доступа к различным версиям "одного и того же объекта". Скажем, объект страницы идентифицируется уникальным ключом и доступен по GET/api/page/pagekey. Его можно обновить, отправив PUT/api/page/pagekey и соответствующий документ в теле.
Теперь наша система отслеживает старые версии страницы, которые мы также хотим получить через API. Предположим, что более старая версия документа - это версия 1. Кажется, существует как минимум два способа разработки API для доступа к этой конкретной версии страницы:
- GET/api/page/pagekey/1
- GET/api/page/pagekey? version = 1
Первый вариант отображает конкретную версию как свой собственный ресурс; второй вариант предоставляет существующему ресурсу дополнительный контекст версии.
- Является ли вариант (1) или (2) лучшим решением? Или есть еще лучший способ сделать это?
- В варианте (1) запрос на номер версии, который не существует, например. /api/page/pagekey/ 7 может вызывать HTTP 404 Not Found, что очень удобно. Будет ли это также действительным ответом на состояние при рассмотрении варианта (2), где мы изменим только контекстную "версию" существующего ресурса, которая без параметра версии вернет ответ HTTP 200 Ok?