POST方法返回404,即使GET方法返回302



问题

我有这个假API:

[{"task_id":"44","task_title":"task1"},{"task_id":"45","task_title":"task2"},{"task_id":"46","task_title":"task1"},{"task_id":"47","task_title":"task2"}]

当我尝试使用fetch GET方法访问它时,使用以下代码:

function getData(){
fetch('http://localhost:5000/api/tasks')
.then(res => res.json())   
.then((data) => {console.log(data)});}
getData();

我在控制台得到预期的结果。

(4) [{…}, {…}, {…}, {…}]
0: {task_id: '44', task_title: 'task1'}
1: {task_id: '45', task_title: 'task2'}
2: {task_id: '46', task_title: 'task1'}
3: {task_id: '47', task_title: 'task2'}

然而,当我尝试通过POST方法访问它时,像这样:

function postData(){
fetch('http://localhost:5000/api/tasks',{
method: 'POST',
mode: 'cors',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
task_title: 'testTask'
})    
})
.then(res =>{
return res.json()
})
.then(data => console.log(data))
.catch(error => console.log('ERROR'))
}

我得到这个意外的404:

POST http://localhost:5000/api/tasks 404 (Not Found)

我的API是用Node.js和express设置的:

app.get('/api/tasks', (req, res)=>{
db.SelectAll().then(data => {res.json(data)});
})

db is just

const db = require('./db/db.js');

and SelectAll() is:

async function SelectAll() {
try {
const res = await client.query("SELECT * FROM tasks");
return res.rows;
} catch(err){
console.log(err);   
}
client.end();
};

是什么导致这个404?

app.get('/api/tasks', (req, res)=>{
db.SelectAll().then(data => {res.json(data)});
})

你的代码注册了一个GET处理程序。您没有使用app.post来注册POST处理程序。

而this应该表示对该路径的POST请求得到405 Method Not Allowed响应,Express不自动支持此操作,而是给出404 Not Found

如果您想在向该路径发出POST请求时做一些事情,那么您需要使用app.post来注册一个函数,该函数将运行并执行您想要执行的任何操作。

相关内容

  • 没有找到相关文章

最新更新