Flask / Eve:带参数的内部 GET 请求

Flask / Eve: Internal GET request with parameters

我正在使用 flask webserver (part of an eve api) 并且需要执行内部 GET-请求。

对于外部请求,我使用此代码:

url = 'http://127.0.0.1:5000/simulations'
r = requests.get(url,
                 headers={'Content-Type': 'application/json', 'Accept': 'application/json'},
                 params={'hateoas': False}
                 )

但是,当尝试使用来自 Flask 应用程序中的函数的 requests 模块执行请求并引发 ConnectionRefusedError:

时,这不起作用

requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionRefusedError(61, 'Connection refused'))

为了使我的 flask 应用程序 request available internally, I considered to use the test_client() 如下:

r = app.test_client().get(url,
                          headers={'Content-Type': 'application/json', 'Accept': 'application/json'}
                          )

这工作得很好,但我需要传递额外的参数,正如您在我使用 requests 模块的第一个示例片段中看到的那样。所以我将上面的代码扩展为:

r = app.test_client().get(url,
                          headers={'Content-Type': 'application/json', 'Accept': 'application/json'},
                          params={'hateoas': False}
                          )

不幸的是,这引发了 TypeError:

TypeError: init() got an unexpected keyword argument 'params'

那么有没有办法在内部使用 flask 或 eve 来处理 GET 请求?

我知道有一个 get_internal repo branch 用于交付 get_internal() 的开发实现,可与 post_internal() 等其他请求类型相媲美。但是我不喜欢使用这个开发分支,因为不确定下一个稳定版本是否会实现这个功能。

你传递查询字符串的方式不对,你应该:

r = app.test_client().get(url,
                          headers={'Content-Type': 'application/json', 'Accept': 'application/json'},
                          query_string={'hateoas': False})

使用 query_string 关键字。

顺便说一下,如果您要发帖,请使用 data 关键字。