【发布时间】:2021-11-17 14:21:53
【问题描述】:
所以我有一个带有模拟数据的 JSON 文件。我正在尝试创建一个模拟 API 服务器。我有一条可以正常工作的路线:
const express = require("express");
const router = express.Router();
const data = require('../data/customers.json')
router.get("/", (req, res) => {
try {
res.json({
customers: data
}).status(200);
} catch(error) {
console.error("ERROR: ",error);
return error;
}
})
我希望下一个路由是 localhost/customers/:id,但由于某种原因,当我将以下路由作为 localhost/customers/2 进行测试时,以下路由无法读取 req 参数。但是,如果我为 2 分配一个测试变量并在 find 函数中使用它,它就可以工作。因此,我将其缩小到 req.params 的问题。这是路线(当然是在同一个文件中):
router.get("/:id", async (req, res) => {
const { customer_id } = req.params;
console.log('ID NUMBER', customer_id);
try {
const response = await data.find( customer => customer.id === customer_id);
console.log(response)
res.json(response).status(200);
} catch(error) {
console.error("ERROR: ",error);
return error;
}
})
如果它有帮助,这里是我的 app.js 的副本:
'use strict';
const http = require('http');
const host = "127.0.0.1";
const port = 3000;
const cors = require('cors');
const morgan = require('morgan');
const express = require('express');
const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(morgan('dev'));
app.use(cors());
app.use(express.static('public'));
const server = http.createServer(app);
server.listen(port, host, () => {
console.log('Server has started.')
});
const rootController = require('./routes/index');
const customersController = require('./routes/customers');
app.use('/', rootController);
app.use('/customers', customersController);
【问题讨论】:
标签: javascript node.js json express mockserver