【发布时间】:2021-12-11 05:20:40
【问题描述】:
我已将我的用例简化为一个简单的测试,其中我单击一个按钮并使用 axios API 发送一个 UPDATE put 请求。 其他三种请求方法——发布、获取和删除,都可以正常工作并被识别。但是,我的 PUT 方法给出了 404 Not Found 错误,就好像我没有用 express 建立方法一样我的服务器。
这是请求的代码,由该事件处理程序(按钮)触发:
const handleUpdate = async (e, id) => {
e.stopPropagation();
// navigate(`/restaurants/${id}/update`);
//update test
try {
const updatedRestaurant = await RestaurantFinder.put(`/${id}`, {
name: "taco bell",
location: "dogtown",
price_range: "2"
});
console.log(updatedRestaurant);
navigate("/");
} catch(err) {
console.log(err);
}
};
这是api的实例化:
import axios from "axios";
export default axios.create({
baseURL: "http://localhost:3001/api/v1/restaurants"
}
);
这是 Express 中的请求。注意第一个日志“这存在吗???”从不显示。永远找不到“http://localhost:3001/api/v1/restaurants/id”的put请求地址。
//UPDATE a restaurant
app.put("/api/v1/restaurants/:id"), async (req, res) => {
console.log("does this exist???");
try {
const results = await db.query(
"UPDATE restaurants SET name = $1, location = $2, price_range = $3 where id = $4 returning *",
[req.body.name, req.body.location, req.body.price_range, req.params.id]
);
res.status(200).json({
status: "succes",
data: {
restaurant: results.rows[0],
},
});
} catch (err) {
console.log(err);
}
console.log(req.params.id);
console.log(req.body);
};
我已经仔细研究了 StackOverflow 以获得答案,我想我目前已经查看了 50 多个帖子。这本应该如此简单,但我找不到一个答案,也找不到其他人发生的情况。
如果有人可以帮助我解决问题所在,我将不胜感激!
编辑 1 @Stephen:
const app = express();
app.use(cors(
{
methods: ["POST", "GET", "DELETE", "PUT"]
}
));
app.use(express.json());
所以我没有运气就把它改成了这个。本来我只是用cors(),我的理解是默认允许put方法。
【问题讨论】:
标签: node.js postgresql express axios request