我正在使用React、Typescript和自制的RESTapi。
我正试图从React中的客户端向我的api发出PUT请求,但我一直收到错误";SyntaxError:JSON中位于"0"位置的意外标记B;。对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。
删除此标头可能会解决您的问题。