【问题标题】:Expressjs base API delete method show error can not get error?Expressjs基本API删除方法显示错误无法得到错误?
【发布时间】:2022-02-08 18:56:46
【问题描述】:

我是 Express.js 的新手;我尝试构建一个没有任何数据库的 API。所有路由都正常工作,但发布和删除 API 不工作。 当我在浏览器中点击删除 URL 时,我发现一个错误。

我的 app.js 路由页面看起来像

import express from "express";
import logger from "morgan";
import bodyParser from "body-parser";

//  get routes
import indexRouter from "./routes/index.js";
import postRouter from "./routes/post.js";
import tagRouter from "./routes/tags.js";
import commentRouter from "./routes/comment.js";
import authorRouter from "./routes/author.js";

// post routers
import postMethodRouters from "./routes/postMethodRouters.js";

//  delete routers
import deletePostRouters from "./routes/delete.js";

var app = express();

app.use(logger("dev"));
app.use(bodyParser.json());
// app.use(express.urlencoded({ extended: false }));

//  get method
app.use("/api/v1/", indexRouter);
app.use("/api/v1/post", postRouter);
app.use("/api/v1/tags", tagRouter);
app.use("/api/v1/comments", commentRouter);
app.use("/api/v1/authors", authorRouter);

//  post method
app.use("/createPost", postMethodRouters);

//  delete method
app.use("/api/v1/", deletePostRouters);

var listener = app.listen(8080, function () {
  console.log("Listening on port " + listener.address().port);
});

我的 delete.js 路由看起来像

import express from "express";

var router = express.Router();

router.delete("/delete/:id", function (req, res) {
  res.status(200).send("DELETE request to homepage");
});

export default router;

我的 post.js 路由器看起来像

import express from "express";

import getBlog from "../API/Post/singleGenrater.js";

var router = express.Router();


router.post("/", function (req, res) {
  
  res.send("POST request to homepage");
});
export default router;

【问题讨论】:

  • 浏览器 url 你只能测试'get'路由。您将需要类似邮递员或 vscode 上的休息客户端
  • 是的,一秒钟前我发现了问题,我花了 2 天时间出错。对不起,这都是我的错。我错误地更改了环境变量中的 API URL,导致我遇到此错误。
  • 是的,一秒钟前我发现了问题,我花了 2 天时间出错。对不起,这都是我的错。我错误地更改了环境变量中的 API URL,导致我遇到此错误。

标签: javascript api express


【解决方案1】:

在 app.js 中,尝试如下修复(删除“/api/v1”后的“/”)

//  delete method
app.use("/api/v1", deletePostRouters);

其次,在文件delete.js中,我看到您使用的是DELETE方法(router.delete("/delete/:id"),但是当您调用api时,您将其用作GET(GET /api/v1/delete/id)?这是一个不同的方法,所以它不会调用api。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    相关资源
    最近更新 更多