为了账号安全,请及时绑定邮箱和手机立即绑定

无法 POST 到 Express 路由器(404 错误)

无法 POST 到 Express 路由器(404 错误)

侃侃尔雅 2022-10-08 17:01:23
我无法获取到我的 Express 路由器的 POST 请求。我有许多工作正常的 GET 请求,但这是我的第一个 POST 请求,它不起作用。我的前端代码如下所示:export async function postHamster(name, age) {try {    await fetch('/hamsters/api/new-hamster',        {            method: 'POST',            headers: { "Content-Type": "application/json" },            body: JSON.stringify({                name: name,                age: age            })        })    console.log("postHamster has run") //LOGGED}catch (e) {    console.error(e)}}响应将始终是:fetchData.js:38 POST http://localhost:3000/hamsters/api/new-hamster 404 (Not Found)我已经三重检查了路径,它不会出错。后端路径是文件“hamsters.js”中的“router.get('api/new-hamster', async (req, res)...”。我还将后端函数放在其文件的最顶部,以确保它不会被文件中的任何其他函数推翻。这是我的 server.js:    // THIS FIRST FUNCTION I JUST COPIED FROM A SOLUTION BUT IT DOES NOT SEEM TO HELP// routes/index.jsmodule.exports = (express) => {  // Create express Router  var router = express.Router();  // add routes  server.route('/hamsters/api/new-hamster')    .post((req, res) => {       res.setHeader('Content-Type', 'application/json');       res.send('You sent: sdadad to Express');    });  return router;}const express = require('express');const server = express();const serverPort = process.env.PORT || 1234;server.use(express.static(__dirname + '/../build'))let data = require('./data.json')const { Router } = require('express');let router = new Router();//USE BODY-PARSER BEFORE REGISTERING ROUTES!const bodyParser = require('body-parser')server.use(bodyParser.urlencoded({ extended: true }));server.use(bodyParser.json())server.use(function(req, res, next) {    res.header("Access-Control-Allow-Origin", "*");    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");    next();  });})
查看完整描述

2 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

您是否在控制台的网络选项卡中检查了您尝试发布到的网址?我认为您需要在后端路由中的 api 之前添加 / : router.get('/api/new-hamster', async (req, res)..."。



查看完整回答
反对 回复 2022-10-08
?
繁星coding

TA贡献1797条经验 获得超4个赞

你有这个:

server.use(bodyParser.urlencoded({ extended: true }));

而不是这个:

server.use(bodyParser.urlencoded({ extended: false }));


查看完整回答
反对 回复 2022-10-08
  • 2 回答
  • 0 关注
  • 60 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信