2016-11-24 21 views
1

falcon libを使用してPythonでREST APIを実装する方法を学習しました。 は、例えば、私は次のdictを持っている: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

私はあなたがあなたのon_get()機能でこれを置くべき

from_time = req.get_param('from_time') 
to_time = req.get_param('to_time') 

req.get_param()でそれらを取得する必要があり、私は通常、しかし、彼らのドキュメントを見て、フラスコと連携ファルコンに精通していないです

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を使ってアクセスしましょう。

関連する問題