[英]422 Error Code wenn sending a Post Request from Angular Frontend zu FastAPI Backend
[英]FastAPI Post APIs invoked from Angular - Same code : Different Behaviour
我是 Angular 和 FastApi 的新手。 我一直在嘗試從 Angular 屏幕調用 2 個單獨的 FastApi 端點的場景。
Python 代碼
from fastapi import FastAPI
from pydantic import BaseModel
from fastapi.middleware.cors import CORSMiddleware
# from starlette.middleware.cors import CORSMiddleware
# from starlette.middleware import Middleware
class Item(BaseModel):
name: str
description: str | None= None
price: float
tax: float | None= None
origins = [
"*"
]
app = FastAPI();
app.add_middleware(
CORSMiddleware,
allow_origins = origins,
allow_credentials = False,
allow_methods = ["*"],
allow_headers = ["*"]
)
@app.post("/items/")
async def root(item: Item):
return item
Angular 代碼
onClickTest(){
const test = new Post("John","Desc",1,2);
console.log("Clicked...");
this.
httpClient.
post('http://127.0.0.1:8001/items',test).subscribe(
(response) => {
console.log(response)
},
(error) => {
console.log(error)
}
)
// const post = new Test("John");
this.
httpClient.
post('http://127.0.0.1/8000/items',test).subscribe(
(response) => {
console.log(response)
},
(error) => {
console.log(error)
}
)
現在,在端口 8001 上成功處理了 Fast Api 服務的請求,同時在端口 8000 上給出了拒絕連接到 Fast Api 服務的錯誤。試圖了解可能導致這種情況的原因。 錯誤消息似乎沒有提供太多信息。 謝謝。
在一種情況下,您調用的是127.0.0.1:8001
,這是正確的;在第二種情況下,您調用的是127.0.0.1/8000
,這是錯誤的。 替換:
/
該問題可能是由於 Angular 代碼配置錯誤造成的,特別是在 HTTP 發布請求中。 第一個請求使用了正確的主機地址http://127.0.0.1:8001/items ,而第二個請求使用了錯誤的地址http://127.0.0.1/8000/items 。 (注意:“:”而不是“/”)
第二個請求的正確主機地址應該是http://127.0.0.1:8000/items 。
要解決該錯誤,請按如下方式更新第二個請求:
this.
httpClient.
post('http://127.0.0.1:8000/items', test).subscribe(
(response) => {
console.log(response)
},
(error) => {
console.log(error)
}
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.