问题描述
我目前正在使用Google Cloud Run来部署API,尽管一切正常,但现在我很难理解我得到的错误。
我使用FastAPI在python3上创建了API,位置模型基于Pydantic's BaseModel。
为了说明这一点,我定义了以下测试路线:
class Location(BaseModel):
lat: float
lng: float
@router.get('/test_404')
async def test_404(origin: Location = Body(...),destination: Location = Body(...)):
print(origin)
print(destination)
return {'res': 'ok'}
该路由应在请求的正文中包含两个参数:起点和终点,并且 确实 ,但仅当我在本地部署时才可以。 这:
url_local = "http://0.0.0.0:8080/test_404"
data = {
'origin': {'lat': 104,'lng': 342},'destination': {'lat': 104,'lng': 342}
}
resp = requests.get(url_local,json = data)
print(resp.text)
输出:
'{"res":"ok"}'
当我在Cloud Run上部署相同的服务时,会出现此问题。我所有其他路线都工作正常,但这是将上面的代码与容器url一起使用时得到的输出:
<!DOCTYPE html>\n
<html lang=en>
<Meta charset=utf-8>
\n
<Meta name=viewport content="initial-scale=1,minimum-scale=1,width=device-width">
\n <title>Error 400 (Bad Request)!!1</title>\n
\n <a href=//www.google.com/><span id=logo aria-label=Google></span></a>\n
<p><b>400.</b>
<ins>That’s an error.</ins>
\n
<p>Your client has issued a malformed or illegal request.
<ins>That’s all we kNow.</ins>
这是由Google触发的错误,不允许我的请求到达服务(无日志条目)
非常感谢您