Sud*_*del 5 python callback python-3.x starlette fastapi
我能够从另一个 API 获得一个 API 的响应,但无法将其存储在某处(在返回响应之前的文件或其他内容中)
response=RedirectResponse(url="/apiname/")(我想访问带有标头和正文的发布请求)
我想存储这个响应内容而不返回它。
是的,如果我返回函数,我会得到结果,但是当我打印它时,我找不到结果。另外,如果我给出发布请求,那么我会收到错误实体未找到。
我阅读了 starlette 和 fastapi 文档,但找不到解决方法。回调也没有帮助。
Sud*_*del 13
我没有完全掌握在不直接使用fastapi/starlette返回的情况下存储响应的方法。但我找到了完成此任务的解决方法。
import requests
def test_function(request: Request, path_parameter: path_param):
request_example = {"test" : "in"}
host = request.client.host
data_source_id = path_parameter.id
get_test_url= f"http://{host}/test/{id}/"
get_inp_url = f"http://{host}/test/{id}/inp"
test_get_response = requests.get(get_test_url)
inp_post_response = requests.post(get_inp_url , json=request_example)
if inp_post_response .status_code == 200:
print(json.loads(test_get_response.content.decode('utf-8')))
Run Code Online (Sandbox Code Playgroud)
如果有更好的方法,请告诉我。
T D*_*T D 10
我有同样的问题,我需要用异步方式调用第三方 API所以我尝试了很多方法,我用requests-async库找到了解决方案 ,它对我有用。
import http3
client = http3.AsyncClient()
async def call_api(url: str):
r = await client.get(url)
return r.text
@app.get("/")
async def root():
...
result_1 = await call_api('url_1')
result_2 = await call_api('url_2')
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7282 次 |
| 最近记录: |