我有以下 on_fetch 钩子,它在第一次检索资源之前填充资源:
# bootstrap resources with default data if it's not already there
def before_returning_resource(resource, documents):
if resource == 'vlans' or resource == 'switches':
if not documents:
r = app.data.driver.db[resource]
filename = 'bootstrap_' + resource + '.json'
with open(os.path.join(script_dir, filename), 'r') as f:
to_insert = json.loads(f.read())
r.insert(to_insert)
documents.extend(to_insert)
在第一次尝试加载集合时,它返回的数据不包括额外的 HATEOAS 内容,如 _links 等,因为它是在插入时添加的,我现在必须返回一些东西。重新加载后,东西就在那里。关于如何在第一个请求期间重新检索数据以使其包含正常请求中的所有内容的任何想法?
示例第一个请求:
{
"_items": [
{
"_id": "5307a7301f72fa82ae83474a",
"ip_address": "10.50.159.196",
"name": "RCG 1G Core Switch",
"dns": "switch196",
"transport": "telnet"
},
{
"_id": "5307a7301f72fa82ae83474b",
"ip_address": "10.47.152.2",
"name": "Rack E1 sw1",
"dns": "re1-sw1",
"transport": "telnet"
},
...
示例后续请求:
{
"_items": [
{
"_updated": "Thu, 01 Jan 1970 00:00:00 GMT",
"name": "RCG 1G Core Switch",
"_links": {
"self": {
"href": "127.0.0.1:5000/switches/5307a7301f72fa82ae83474a",
"title": "Switche"
}
},
"dns": "switch196",
"_created": "Thu, 01 Jan 1970 00:00:00 GMT",
"_id": "5307a7301f72fa82ae83474a",
"ip_address": "10.50.159.196",
"_etag": "4359b74209189b0bbbbfd4b92e647d84d10ede47",
"transport": "telnet"
},
...