我想要这三个端点:
/games
/images
/games/<game_id>/images
Run Code Online (Sandbox Code Playgroud)
这是我的settings.py文件的摘录
#...
games = {
"schema": {
"title": {
"type": "string",
"required": True
},
"name": {
"type": "string",
"required": True
},
}
}
images = {
"schema": {
"game_id": {
"type": "string",
"required": True,
},
"title": {
"type": "string",
"required": True,
},
},
"url": "games/<regex('[a-f0-9]{24}'):game_id>/images"
}
#...
Run Code Online (Sandbox Code Playgroud)
如果省略url属性,则在获取GET时会得到两个预期的端点:
/games
/images
Run Code Online (Sandbox Code Playgroud)
但是如果你包含url属性,则无法点击/ images,而只能点击/ games,/games/<game_id>/images如下所示:
{
"_links": {
"child": [
{
"href": "/games/<regex('[a-f0-9]{24}'):game_id>/images",
"title": "games/<regex('[a-f0-9]{24}'):game_id>/images"
},
{
"href": "/games",
"title": "games"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
如何保留集合图像并仍然通过子资源查询使其文档可用?
您可以设置 3 个不同的端点,而其中两个端点消耗相同的数据库资源(图像)。像这样的东西:
images_schema: {
"game_id": {
"type": "string",
"required": True,
},
"title": {
"type": "string",
"required": True,
},
}
games = {
"schema": {
"title": {
"type": "string",
"required": True
},
"name": {
"type": "string",
"required": True
},
}
}
images = {
"schema": images_schema,
"url": "images" # not really needed
}
games_images = {
"schema": images_schema,
"url": "games/<regex('[a-f0-9]{24}'):game_id>/images",
"datasource": {"source": "images"}
}
Run Code Online (Sandbox Code Playgroud)
作为参考,请参阅多个 API 端点,一个数据源。