2016-11-24 3 views
1

Ich lerne, wie man REST-APIs in Python mit falcon lib implementiert. Zum Beispiel habe ich folgendes dict:Wie behandelt man Abfragen in der 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"} 
        } 

       } 

      } 
     } 

    } 
} 

Ich mag eine API erstellen, die durch einen bestimmten Zeitraum Metriken zurückkehren wird wieder (zum Beispiel zwischen 2014 und 2016). Wie könnte ich es tun? Zum Beispiel habe ich jetzt den folgenden Code ein, die Metriken von server_id und plugin_id zurückgibt: „?“

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) 

Ich dachte an so etwas wie, aber wie die Abfragen nach zu handhaben :

metrics/{server_id}/{plugin_id}?from_time={timestamp}&to_time={timestamp} 

Antwort

1

Ich bin nicht vertraut mit Falcon, ich in der Regel mit Flask arbeiten, aber an ihrer Dokumentation suchen Sie sie mit req.get_param bekommen sollten()

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

Sie dies in Ihrer on_get() Funktion setzen sollten

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

Nach dem ? kommen die Abfrageparameter. Falcon lassen Sie sie mit Request.params zugreifen.

Verwandte Themen