每次我使用下面的js代碼從我的前端發出一個獲取請求時,我都會收到一個400 Bad request狀態。回應的主體有一個錯誤物件說。"需要一個非空的請求體"
。當我在devtools網路標簽上檢查請求部分時,它顯示 "此請求沒有有效載荷"。所以在我看來,它沒有發送我的 Fetch 的主體部分。
之后它確實到達了.then()方法。
這就是 Typescript 代碼:
fetch(`api/person/${person.id}`, {
method: "PUT"/span>,
headers: {
"Content-Type": "application/json"。
},
body: JSON.stringify(person)
})
.then(() => this. router.navigate(["/"/span>])
這是C#的后端:
[HttpPut("{id}"/span>)]
public IActionResult Put(int id, Person person)
{
person.Id = id。
try
{
var updatedPerson = _personRepository.Update(person)。
if (upedPerson != null)
{
return Ok(upedPerson)。
}
return NotFound()。
}
catch (ArgumentNullException)
{
return BadRequest()。
}
注意,這個請求甚至沒有到達這個控制器。如果我在這里放置任何斷點,都不會達到。
這是一個單機版的控制器。
這是我在Visual Studio 2019中運行的一個單頁面應用程式。
然而,它與postman一起作業,回傳200 Ok狀態代碼和一個物件,并到達后端斷點。請求的URL包含int id,正文包含一個Json物件。
uj5u.com熱心網友回復:
好吧,這不是一個有明確答案的問題。 下面是你可能需要采取的步驟,以找出:
確保在你的獲取請求中,引數person真的存在,只要在獲取前做console.log(person)
確保服務器接受 "application/json "型別的內容。雖然在這種情況下,回應代碼應該是不同的。
檢查回應頭,后端和前端的源頭是否相同?你需要看到的是:
Access-Control-Allow-Headers: * 訪問-控制-允許-方法。PUT 訪問-控制-允許-原點。
Postman在你的PC上作為一個本地應用程式作業,它有不同的方式來發送請求,而不是你的瀏覽器,有時這會導致不明確的結果。
uj5u.com熱心網友回復:
這里有一個方法來測驗正在發生的事情。
會發生什么? 你是否得到了資料(列印在控制臺)? 這可能會讓你進入你需要采取的下一個步驟。
fetch("api/person/1"/span>)
.then(response => response.json()
.then(data => console.log(data)) 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/332360.html
標籤:
上一篇:foriinrange(len(firstname)):print(firstname[0])-我如何在一行中列印這個?
