web-dev-qa-db-ja.com

Falconでクエリ文字列を使用する方法python

次の機能を持つようにアプリを構成しますか?

  1. app.add_route('/v1/tablets', TabletsCollection())として定義されたapiエンドポイントを持っている

  2. そして、このようなQueryParamsを引き続き使用できますhttps://example.com/api/v1/tablets?limit=12&offset=50&q=tablet name

コレクションには2つのメソッドがありますon_getリスト全体を取得し、フィルターを使用してon_post単一のレコードを作成するため。

私はしばらくの間ネットを検索してきましたが、query_stringと適切に解析されたパラメータをどのように取得しますか?

7
woss

クエリ文字列と解析されたクエリ文字列(dictとして)の両方が、falconがAPIエンドポイントに渡すRequestオブジェクトで使用できます。

ハンドラーは次のようなことを行うことができます。

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 および http://falcon.readthedocs.io/en/stable/ api/request_and_response.html#Request.params

7
Max Gasner

falcon.uriモジュールを使用してクエリ文字列を解析できます。

qs = falcon.uri.parse_query_string(req.query_string)
        if "myq" in qs:
            searchedQ = qs["myq"]
0
Narges Mousavi

しばらくして私はそれを理解しましたが、最初に思っていたように、問題はファルコンにありませんでした。問題は、リクエストをgunincornにプロキシしているNginx構成にありました。

ここで完全な答えを見つけることができます nginxを使用して、クエリパラメータを転送する方法は? またはここで短い答え:

Nginx設定ファイルの一部

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