如何在 REST API [ python] 中处理查询
How to handle queries in REST API [ python]
我正在学习如何使用 falcon 库在 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,它将 return 到 return 一段时间内的指标(例如 2014 年到 2016 年之间)。我该怎么做?
例如,我现在有以下代码 returns 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}
在?
之后是查询参数。 Falcon 让您使用 Request.params
.
访问它们
我不熟悉 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
我正在学习如何使用 falcon 库在 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,它将 return 到 return 一段时间内的指标(例如 2014 年到 2016 年之间)。我该怎么做? 例如,我现在有以下代码 returns 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}
在?
之后是查询参数。 Falcon 让您使用 Request.params
.
我不熟悉 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