簡體   English   中英

PUT 調用 RESTapi 給出錯誤“SyntaxError: Unexpected token B in JSON at position 0”

[英]PUT call to RESTapi giving error "SyntaxError: Unexpected token B in JSON at position 0"

我正在使用 React、Typescript 和自制的 RESTapi。

我試圖在 React 中從我的客戶端向我的 api 發出 PUT 請求,但我不斷收到錯誤“SyntaxError: Unexpected token B in JSON at Z4757FE07FD492A360EA6A760D6” 對 api 的 PUT 調用不包含正文,也不應該因為我在 API 中創建請求的方式。 我已經確認 fetch 中的 url 是正確的,並且當直接在我的 API 中進行測試時,API 調用工作得非常好。 因此,問題似乎與我在客戶端進行 PUT 調用的方式有關

以下是我的客戶打來的 PUT 電話。

提前非常感謝!

  function putProductInBasket(id: number){
      
      fetch("http://localhost:3005/velocishop/customers/" + localStorage.uuid + "/baskets/" + localStorage.uuid + "/products/" +  id, { 
        method: "PUT",
        headers: {
          Accept: "application/json",
          "Content-Type": "application/json"
        },
      })
        .then(response => {
          if (response.ok)
            return Promise.resolve ({ status:response.statusText}) 
          else
            return Promise.reject ({ status:response.statusText})
        }
        )
        .catch(err => console.log(err))
  }

您需要首先使用res.json()將來自 fetch 的響應轉換為 json 類似這樣的東西

fetch('/data.json')
  .then(response => response.json()) // Add this .then block before your first .then block
  .then(data => {
    console.log(data)
  })
  .catch(err => ...)

如果您設置Content-Type: application/json正文,則不發送正文無效,因為期望您實際發送 JSON。

刪除此 header 可能會解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM