我学习了如何使用falcon lib在python中实现REST API。 例如,我有以下词典:
db_data = {
"servers" : {
"1": {
# 'server_id':1,
"plugins":{
"1": {
"metrics_by_time":{
"2014":{"1":"Hello World 0"}
"2015":{"1":"Hello World 1"}
"2016":{"1":"Hello World 2"}
}
}
}
}
}
}
我想创建一个API,它将返回一段时间(例如2014年到2016年之间)返回指标。我怎么能这样做? 例如,我现在有以下代码通过server_id和plugin_id返回指标:
class By_Plugin_ID(object):
def on_get(self, req, resp, server_id, plugin_id):
resp.status = falcon.HTTP_200
resp.body = (json.dumps(db_data["servers"][str(server_id)]["plugins"][str(plugin_id)], ensure_ascii=False, default=lambda x:str(x)))
import falcon
app = application = falcon.API()
plugins_metrics = By_Plugin_ID()
app.add_route('/metrics/{server_id}/{plugin_id}', plugins_metrics)
我想过这样的事情,但是如何在"?"之后处理查询。 :
metrics/{server_id}/{plugin_id}?from_time={timestamp}&to_time={timestamp}
答案 0 :(得分:1)
?
后出现查询参数。 Falcon允许您使用Request.params
访问它们。
答案 1 :(得分:1)
我对Falcon不熟悉,我通常与Flask合作,但是看看他们的文档,你应该用req.get_param()
来获取它们。from_time = req.get_param('from_time')
to_time = req.get_param('to_time')
你应该把它放在on_get()
函数
def on_get(self, req, resp, server_id, plugin_id):
from_time = req.get_param('from_time')
to_time = req.get_param('to_time')
# do whatever you want and return your response