使用快速服务器的 POST 请求出现 404 错误
404 error with POST request using express server
我运行这个函数应该post数据到我的快递服务器。单击按钮时调用该函数。
const fetchData = async () => {
const response = await fetch('http://localhost:1337/api/test', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
message: 'hello world'
}),
})
// const data = await response.json()
const data = await response
console.log(data)
}
这是我的快递配置
const express = require('express')
const cors = require('cors')
const app = express()
app.use(cors())
app.use(express.json())
app.get('/api/test', (req: any, res: any) => {
console.log(req.body)
res.json({ status: 'ok' })
})
app.listen(1337, () => {
console.log('Server started on 1337')
})
问题是,当我单击按钮时,我收到 POST 请求的 404 错误,我的 console.log(response)
结果如下。
Response { type: "cors", url: "http://localhost:1337/api/test", redirected: false, status: 404, ok: false, statusText: "Not Found", headers: Headers, body: ReadableStream, bodyUsed: false }
body: ReadableStream { locked: false }
bodyUsed: false
headers: Headers { }
ok: false
redirected: false
status: 404
statusText: "Not Found"
type: "cors"
url: "http://localhost:1337/api/test"
<prototype>: ResponsePrototype { clone: clone(), arrayBuffer: arrayBuffer(), blob: blob(), … }
您正在从客户端发出 POST 请求,但没有在服务器端配置 POST 请求处理程序。相反,您有一个 GET 请求处理程序。解决方案是为 POST 请求添加一个处理程序,或者将您的 POST 请求方法转换为 GET。
您没有return获取来自 fetchData 函数的响应。
您应该简单地 return 响应如下。
-服务器端也没有 post 请求处理程序。
您可以像为获取请求编写的那样添加 post 请求处理程序。
const fetchData = async () => {
const response = await fetch('http://localhost:1337/api/test', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
message: 'hello world'
}),
})
// const data = await response.json()
const data = await response
//need to return response as below
return data.json();
}
In the backend change app.get to app.post
const express = require('express')
const cors = require('cors')
const app = express()
app.use(cors())
app.use(express.json())
// here
app.post('/api/test', (req: any, res: any) => {
console.log(req.body)
res.json({ status: 'ok' })
})
app.listen(1337, () => {
console.log('Server started on 1337')
})
在服务器中你还没有实现 POST 端点,你只实现了 GET 端点
我运行这个函数应该post数据到我的快递服务器。单击按钮时调用该函数。
const fetchData = async () => {
const response = await fetch('http://localhost:1337/api/test', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
message: 'hello world'
}),
})
// const data = await response.json()
const data = await response
console.log(data)
}
这是我的快递配置
const express = require('express')
const cors = require('cors')
const app = express()
app.use(cors())
app.use(express.json())
app.get('/api/test', (req: any, res: any) => {
console.log(req.body)
res.json({ status: 'ok' })
})
app.listen(1337, () => {
console.log('Server started on 1337')
})
问题是,当我单击按钮时,我收到 POST 请求的 404 错误,我的 console.log(response)
结果如下。
Response { type: "cors", url: "http://localhost:1337/api/test", redirected: false, status: 404, ok: false, statusText: "Not Found", headers: Headers, body: ReadableStream, bodyUsed: false }
body: ReadableStream { locked: false }
bodyUsed: false
headers: Headers { }
ok: false
redirected: false
status: 404
statusText: "Not Found"
type: "cors"
url: "http://localhost:1337/api/test"
<prototype>: ResponsePrototype { clone: clone(), arrayBuffer: arrayBuffer(), blob: blob(), … }
您正在从客户端发出 POST 请求,但没有在服务器端配置 POST 请求处理程序。相反,您有一个 GET 请求处理程序。解决方案是为 POST 请求添加一个处理程序,或者将您的 POST 请求方法转换为 GET。
您没有return获取来自 fetchData 函数的响应。 您应该简单地 return 响应如下。 -服务器端也没有 post 请求处理程序。 您可以像为获取请求编写的那样添加 post 请求处理程序。
const fetchData = async () => {
const response = await fetch('http://localhost:1337/api/test', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
message: 'hello world'
}),
})
// const data = await response.json()
const data = await response
//need to return response as below
return data.json();
}
In the backend change app.get to app.post
const express = require('express')
const cors = require('cors')
const app = express()
app.use(cors())
app.use(express.json())
// here
app.post('/api/test', (req: any, res: any) => {
console.log(req.body)
res.json({ status: 'ok' })
})
app.listen(1337, () => {
console.log('Server started on 1337')
})
在服务器中你还没有实现 POST 端点,你只实现了 GET 端点