您是否将应用程序配置为具有以下功能:
-
将 API 终结点定义为
app.add_route('/v1/tablets', TabletsCollection())
-
并且仍然能够像这样使用QueryParams
https://example.com/api/v1/tablets?limit=12&offset=50&q=tablet name
集合有两种方法on_get
用于检索整个列表和使用筛选器和on_post
创建单个记录。
我已经在网上搜索了一段时间,你如何获得query_string和正确解析的参数?
查询字符串和解析的查询字符串(作为字典)在 falcon 传递给您的 API 终端节点的请求对象上都可用。
您的处理程序可以执行以下操作:
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。
您可以使用 falcon.uri 模块来解析查询字符串。
qs = falcon.uri.parse_query_string(req.query_string)
if "myq" in qs:
searchedQ = qs["myq"]
一段时间后,我想通了,问题不是我一开始想的那样与猎鹰有关。问题出在 Nginx 配置中,该配置正在代理对 gunincorn 的请求。
你可以在这里找到完整的答案 nginx,如何转发查询参数?或简短的答案在这里:
nginx配置文件的一部分
location ~ ^/api/(.*)$ {
# ... your code
# need to pass all the args to proxy
proxy_pass http://gunicorn/$1$is_args$args;
}