2016-11-24 43 views
1

我学习如何使用falcon lib在python中实现REST API。 例如我有以下字典:如何在REST API中处理查询[python]

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"} 
        } 

       } 

      } 
     } 

    } 
} 

我想要创建将返回(2014年和2016年之间,例如)一段时间以返回度量的API。我怎么能这样做? 比如我现在下面的代码,通过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} 

回答

1

我不熟悉的猎鹰,我通常瓶工作,但是看着自己的文档,你应该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 
1

之后?来了查询参数。猎鹰让你使用Request.params访问它们。