Я довольно успешно использую Python REST API Framework, и я благодарю его авторов за его предоставление.
Согласно (скудной) документации возможно применение встраивания определенной версии. Рассмотрим следующий пример, напрямую скопированный из документа по адресу http://python-eve.org/.
DOMAIN = {
'emails': {
'schema': {
'author': {
'type': 'dict',
'schema': {
'_id': {'type': 'objectid'},
'_version': {'type': 'integer'}
},
'data_relation': {
'resource': 'users',
'field': '_id',
'embeddable': True,
'version': True,
},
},
'subject': {'type': 'string'},
'body': {'type': 'string'},
}
}
Здесь «автор» — это схема с полями «_id» и «_version» в каждом документе электронной почты.
A. Предполагая, что мой внешний интерфейс использует Javascript, когда я применяю оператор
Restangular.one('emails', some-id).get({embedded: {"author": 1}}).then(
чтобы получить документ электронной почты с заданным идентификатором и запросить встраивание документа автора, я получаю последнюю версию автора, а не версию, указанную в поле _version автора документа электронной почты. Почему бы не уважать версию? Есть ли способ через какую-то волшебную конфигурацию принудительно встроить указанную там версию?
BW, обходной путь довольно прост — просто отключите это автоматическое встраивание и вместо этого сначала извлеките документ электронной почты, а затем извлеките конкретную версию автора, но это противоречит здравому смыслу.
B. В руководстве указан атрибут конфигурации под названием «embedded_fields», который указывает, и я цитирую, список полей, для которых встроенная сериализация ресурсов включена по умолчанию. А может ожидать, что даже если в этом поле указано, что автор должен быть встроен по умолчанию, оператор
Restangular.one('emails', some-id).get({embedded: {"author": 0}}).then(
переопределит значение по умолчанию. Ну, это не так. Опять же, почему? или, возможно, это просто ошибка.