【问题标题】:Browser not able to find Express Route URL Endpoint浏览器找不到 Express Route URL 端点
【发布时间】:2021-04-01 09:20:41
【问题描述】:

当我使用 Postman 或在浏览器中发出请求来测试我的 api 路由时,我在浏览器控制台 users/:1 中收到 404 错误(服务器控制台中没有错误)。现在应用程序中的功能很少,只是尝试按照教程(Brad Traversy 在 Udemy 上的 React Front to Back 课程)并设置和测试我的路线。到目前为止,我已经查看了所有说明,并根据教程的 GH 存储库中完整的代码库检查了我的代码,它似乎是正确的,但我确信我遗漏了一些小东西。所有依赖项都已通过NPM 安装和审核。下面是代码:

server.js

//* Dependencies
const express = require("express");
const connectDB = require("./config/db");
const path = require("path");

const app = express();

//* Connect to database
connectDB();

//* Init Middleware
app.use(express.json({ extended: false }));

//*Define routes
app.use("/api/users", require("./routes/users"));
app.use("/api/auth", require("./routes/auth"));
app.use("/api/contacts", require("./routes/contacts"));

const PORT = process.env.PORT || 8080;

//*Initialize server
app.listen(PORT, () => console.log(`Server listening on port ${PORT}`));

users.js

const express = require("express");
const router = express.Router();
const config = require("config");

const User = require("../models/User");

//*     @route:     POST api/users
//*     @desc:      register a user
//*     @access:    Public
router.post("/", (req, res) => {
  res.send(req.body);
});

module.exports = router;

package.json

{
  "name": "openhousev2",
  "version": "0.1.0",
  "description": "Open Source Contact Management Platform\u001b[1;5D\u001b[1;5D\u001b[1;5D\u001b[1;5D\u001b[1;5D",
  "main": "server.js",
  "scripts": {
    "start": "node server.js",
    "server": "nodemon server.js"
  },
  "author": "LucSedirae",
  "license": "SEE LICENSE IN LICENSE",
  "dependencies": {
    "bcryptjs": "^2.4.3",
    "config": "^3.3.3",
    "express": "^4.17.1",
    "express-validator": "^6.8.1",
    "jsonwebtoken": "^8.5.1",
    "mongoose": "^5.11.8"
  },
  "devDependencies": {
    "concurrently": "^5.3.0",
    "nodemon": "^2.0.6"
  }
}

文件结构

.
|-- server.js
|-- package.json
|-- __routes
    |-- users.js
    |-- auth.js
    |-- contacts.js
|-- __models
    |-- User.js
|-- __config
    |-- db.js
    |-- default.json

【问题讨论】:

    标签: node.js express server routes


    【解决方案1】:

    这是因为您没有为users/:1 端点编写服务器代码。

    您可以做的测试是从 Postman ar users 发送一个 POST 请求,它会给您一个结果,就像您在 users.js 中的 res.send(req.body) 一样。

    【讨论】:

    • 谢谢@theWellHopeErr 这是我在浏览器和邮递员中输入的内容,两者都出现了相同的错误:localhost:8080/api/users。 :1 不是通过路由传入的 id,它只是浏览器控制台识别错误发生的地方
    【解决方案2】:

    我的问题是,在 Postman 中,我将请求类型设置为默认的“get”,即使我的路由是针对发布请求的。将它们的请求类型更改为 POST 模拟了通过我的路线发布数据并按预期工作。到目前为止,浏览器还不是测试我的代码的合适地方,因为我没有要发布的内容。

    【讨论】:

      猜你喜欢
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 2012-07-20
      • 1970-01-01
      • 2017-02-23
      • 2020-04-26
      • 2011-10-04
      • 1970-01-01
      相关资源
      最近更新 更多