2017-10-19 2 views
0

Ho konfigurieren Sie die App folgende Funktionen verwenden müssen:Wie Query-String in Falcon Python

als app.add_route('/v1/tablets', TabletsCollection())

  • Und noch QueryParams nutzen können definiert

    1. Haben Sie einen api-Endpunkt wie diese https://example.com/api/v1/tablets?limit=12&offset=50&q=tablet name

    die Sammlung hat zwei Methoden on_get für die gesamte Liste abzurufen und unter Verwendung des Filters 012 undfür die Erstellung eines einzelnen Datensatzes.

    Ich habe das Netz seit einiger Zeit gesucht, wie erhalten Sie query_string und ordnungsgemäß Params Pars?

  • Antwort

    0

    Sowohl die Abfragezeichenfolge als auch die analysierte Abfragezeichenfolge (als Dict) sind im Request-Objekt verfügbar, das Falcon an Ihren API-Endpunkt übergibt.

    kann Ihr Handler tun Sachen wie:

    class TabletsCollection(): 
        def on_post(self, req, resp): 
         print req.query_string 
         for key, value in req.params.items(): 
          print key, value 
    

    http://falcon.readthedocs.io/en/stable/api/request_and_response.html#Request.query_string und http://falcon.readthedocs.io/en/stable/api/request_and_response.html#Request.params See.

    +0

    Danke für die Antwort, aber ich habe versucht, dass gerade am Anfang und aus irgendeinem Grunde, es funktioniert nicht. Hier ist Gist, dass ich von der Tutorial-Seite https://gist.github.com/wloss/db48b850503a09ac5fa092498970d1d4 – woss

    +0

    geändert habe muss ich den Content-Type als etwas anderes als 'application/json' angeben? – woss

    +0

    Ich habe eine kleine Änderung an Ihrem Kern vorgenommen ('TabletsCollection' anstelle von' TabletsResource' in Zeile 17) und habe es mit 'uwsgi --wsgi-file falcon-app.py --callable app --http: 9000' ausgeführt. Wenn ich dann 'curl localhost: 9000/v1/tables? Foo = bar' starte, bekomme ich die Antwort' {"qs": "foo = bar", "params": {"foo": "bar"}} '. Das funktioniert auch, wenn ich den Inhaltstyp: 'curl localhost: 9000/v1/tablets? Foo = bar -H" Akzeptiere: application/json "-H" Content-Type: application/json "'. Vielleicht besteht das Problem darin, dass Sie Anfragen stellen. –

    0

    Nach einiger Zeit habe ich es herausgefunden, es war nicht mit der Falcon wie ich am Anfang dachte. Das Problem lag in der Nginx-Konfiguration, bei der Anfragen an das Kanonenkonto weitergeleitet werden.

    können Sie finden vollständige Antwort hier with nginx,how to forward query parameters? oder kurze Antwort hier:

    Teil nginx Konfigurationsdatei

    location ~ ^/api/(.*)$ { 
        # ... your code 
        # need to pass all the args to proxy 
        proxy_pass http://gunicorn/$1$is_args$args; 
    }