我是Web开发人员的新手,在发出带有JSON正文的提取请求时遇到一些问题。现在,如果我不使用主体进行提取调用,则提取将连接到我的api(记录已连接到它的api),从我的数据库中检索值,然后将它们发送回前端而不会出现问题。但是,当我将主体对象添加为提取请求的第二个参数时,提取将永远不会连接到api。没有错误输出,它只是等待,并且我的api从不记录它已连接到的状态。
这是代码。这有效:
//this.props.chosenInterests is an object
async sample(){
//url-friendly string
const university = this.props.chosenUniversity.replace(/\s/, '+');
const query = '/interest/' + university;
try{
const response = await fetch(query, {});
if(response.ok){
const jsonResponse = await response.json();
globalVar = jsonResponse;
this.forceUpdate();
}
else{
throw new Error('Request Failed!');
}
}
catch (error){
console.log(error);
}
}
这不是:
//this.props.chosenInterests is an object
async sample(){
//url-friendly string
const university = this.props.chosenUniversity.replace(/\s/, '+');
const query = '/interest/' + university;
try{
const response = await fetch(query, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify(this.props.chosenInterests)
});
if(response.ok){
const jsonResponse = await response.json();
globalVar = jsonResponse;
this.forceUpdate();
}
else{
throw new Error('Request Failed!');
}
}
catch (error){
console.log(error);
}
}
这是我的api:
//already mounted router at /interest
interestRouter.get('/:university', (req, res, next) => {
const university = req.params.university.replace(/\+/g, ' ');
console.log('Connected.');
db.all('SELECT * FROM Table WHERE Table.university = $university', {$university : university},
(error, result) => {
if(error){
next(error);
}
else{
res.json(result);
}
}
)
});
任何帮助将不胜感激。我只是对为什么我没有收到错误或任何东西感到困惑。
答案 0 :(得分:1)
POST失败的原因是因为您的快速脚本正在寻找GET,而不是POST。如果将其更改为以下内容:
interestRouter.post('/:university', (req, res, next) => {...
然后您可以在req.body中看到POST的正文。