繁体   English   中英

Express 服务器无法在 Postman 上获取 /products

[英]Express Server Cannot GET /products on Postman

我使用 Express、Sequelize 和 mySql 创建了一个服务器。 以下代码是我的产品路线:

const express = require('express');
const Product = require('../models/product');

const router = express.Router();

router.get("/", async (req, res) => {
    /* const products = await Product.findAll();
    if (product) {
        res.status(200).send({message: 'Product found successfully', data: products})
    } else {
        res.status(404).send({message: 'Product not found'})
    } */
    res.status(200).end()
});

router.post("/", async (req, res) => {
    try {
        const product = await Product.create(req.body);
        res.send(product)
    } catch (error) {
        console.log(error);
    }
   
})

module.exports = router;

这是我的 server.js 代码:

const express = require("express");
const app = express();
require("dotenv").config();
const cors = require("cors");
const endpoints = require("express-list-endpoints");
const port = 5555;
const productRouter = require("./src/routes/product");
/* const variantRouter = require("./src/routes/variant"); */

const sequelize = require("./src/db/config");

app.use(express.static(__dirname + "/public"));

var corsOption = {
  origin: true,
  methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
  credentials: true,
  exposedHeaders: ["x-auth-token"],
};

app.use(express.json());
app.use(cors(corsOption))

app.use("products", productRouter);
/* app.use("variant", variantRouter); */

app.get("/", (req, res) => {
  res.send("Server is Healthy!");
});

sequelize.sync({ force: true }).then(() => {
  console.log("Drop and re-sync db.");
});
console.log(endpoints(app));

app.listen(process.env.PORT, () => {
  console.log(`server is listening at http://localhost:${process.env.PORT}`),
    sequelize.authenticate().then(
      () => console.log("DB Connected"),
      (err) => console.log("Error in connection", err)
    );
});

我这里还有我的 model:

const sequelize = require("../db/config");
const Sequelize = require("sequelize");
const Variant = require("./variants")

const Product = sequelize.define("products", {
  id: {
    type: Sequelize.UUID,
    primaryKey: true,
  },
  product_name: {
    type: Sequelize.STRING,
    allowNull: false,
  },
  product_description: {
    type: Sequelize.STRING,
    allowNull: false,
  },
  date_uploaded: {
      type: Sequelize.DATE,
      allowNull: true
  },
  date_edited: {
      type: Sequelize.DATE,
      allowNull: true,
  },
  product_varieties: {
    type : Sequelize.UUID,
    reference: {
        model: 'variant',
        key: 'id'
    }
  }, 
}, 
{timestamp: false}
);


module.exports = Product; 

我的服务器 JS 中的路由正在显示发送的字符串。 但是来自 product.js 的路线不起作用。 告诉我不能 GET 也不能在 /products 上发布

解决方案是什么?

您忘记了app.use("/products") / products之前的 /

看起来您的 static 公用文件夹与 API 路由器冲突,尝试将每个 API 路由器放在app.use(express.static(__dirname + "/public"));之前

我在这里找到了解决方案: Express serving static files and routing

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM