FastAPI (Python) 为什么我通过 POST 请求得到 "Unsupported upgrade request."?
FastAPI (Python) Why I get "Unsupported upgrade request." with POST request?
我在 Flask 和 FastAPI 上有类似的应用程序。
当我用 Flask 做这个 curl 请求时,没问题:
没有 TLS:
curl -X POST -H "Content-Type: application/json" -d '{"method": "account.auth"}' http://X.X.X.X:5050/
{"error":0,"result":{"token":"XXX"}}
使用 TLS:
curl -X POST -H "Content-Type: application/json" -d '{"method": "account.auth"}' https://example.com:8443/api/
{"error":0,"result":{"token":"XXX"}}
!!!但是使用 FastAPI 我得到了另一个结果:
没有 TLS:
curl -X POST -H "Content-Type: application/json" -d '{"method": "account.auth"}' http://X.X.X.X:5050/
{"error":0,"result":{"token":"XXX"}}
使用 TLS:
curl -X POST -H "Content-Type: application/json" -d '{"method": "account.auth"}' https://example.com:8443/api/
Unsupported upgrade request.
如何解决“不支持的升级请求”的问题?还有,这是什么? Flask 正常使用它。
同样的问题似乎通常是由 uvicorn
安装不完整引起的,但通常与 websockets 有关。
此问题的解决方案可能是使用推荐的 (by FastAPI) 附加功能重新安装 uvicorn
:
python3 -m pip uninstall uvicorn
python3 -m pip install uvicorn[standard]
如果你想看到没有错误的最终解决方案,你可以在GitHub上看到我的结果代码:
https://github.com/kosyachniy/web/tree/main/api
我在 Flask 和 FastAPI 上有类似的应用程序。 当我用 Flask 做这个 curl 请求时,没问题:
没有 TLS:
curl -X POST -H "Content-Type: application/json" -d '{"method": "account.auth"}' http://X.X.X.X:5050/
{"error":0,"result":{"token":"XXX"}}
使用 TLS:
curl -X POST -H "Content-Type: application/json" -d '{"method": "account.auth"}' https://example.com:8443/api/
{"error":0,"result":{"token":"XXX"}}
!!!但是使用 FastAPI 我得到了另一个结果:
没有 TLS:
curl -X POST -H "Content-Type: application/json" -d '{"method": "account.auth"}' http://X.X.X.X:5050/
{"error":0,"result":{"token":"XXX"}}
使用 TLS:
curl -X POST -H "Content-Type: application/json" -d '{"method": "account.auth"}' https://example.com:8443/api/
Unsupported upgrade request.
如何解决“不支持的升级请求”的问题?还有,这是什么? Flask 正常使用它。
同样的问题似乎通常是由 uvicorn
安装不完整引起的,但通常与 websockets 有关。
此问题的解决方案可能是使用推荐的 (by FastAPI) 附加功能重新安装 uvicorn
:
python3 -m pip uninstall uvicorn
python3 -m pip install uvicorn[standard]
如果你想看到没有错误的最终解决方案,你可以在GitHub上看到我的结果代码: https://github.com/kosyachniy/web/tree/main/api