MongoDB的
db.entity.find()
{
"_id" : ObjectId("5563a4c5567b3104c9ad2951"),
"section" : "section1",
"chapter" : "chapter1",
...
},
{
"_id" : ObjectId("5563a4c5567b3104c9ad2951"),
"section" : "section1",
"chapter" : "chapter2",
...
},....
在我的数据库中,集合entity
主要包含section
和chapter
。只有chapter
值是唯一的,当我们查询给定部分的mongo时,它将返回多个结果(一个部分与许多章节匹配)。
我需要做的是获取给定部分的所有集合,这很简单。
settings.py
URL_PREFIX = "api"
API_VERSION = "v1"
ALLOWED_FILTERS = ['*']
schema = {
'section': {
'type': 'string',
},
'chapter': {
'type': 'string',
},
}
entity = {
'item_title': 'entity',
'resource_methods': ['GET'],
'cache_control': '',
'cache_expires': 0,
'url': 'entity/<regex("\w+"):section>/section',
'schema': schema
}
DOMAIN = {
'entity': entity,
}
run.py
from eve import Eve
if __name__ == '__main__':
app.run(debug=True)
我尝试了什么
curl -L -X GET -H 'Content-Type: application/json' http://127.0.0.1:5000/api/v1/entity/23/section
输出
{
"_status": "ERR",
"_error": {
"message": "The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.",
"code": 404
}
}
我做错了什么?如何获得一个部分的所有实体?
答案 0 :(得分:1)
您是否尝试过编写这样的网址:
http://127.0.0.1:5000/api/v1/entity?where=section=='section32'
请看一下这个python-eve.org/features.html#filtering
答案 1 :(得分:0)
尝试:
curl -H 'Accept: application/json' http://127.0.0.1:5000/api/v1/entity/section23/section
您希望在网址中使用section23
,因为这与正则表达式和数据库中存储的实际值相匹配。
您可能还想将网址更改为:
'url': 'entity/<regex("\w+"):section>'
允许这样的网址:
http://127.0.0.1:5000/api/v1/entity/section23
这可能更具语义性。希望这会有所帮助。