如何解决从 nodejs 中恢复参数表示不可能
大家晚上好 我正在尝试使用 mongodb 设置一个快速服务器 只要我定义了不带参数的路由,我的测试就使用邮递员工作,但是一旦我创建了带参数的获取路由,就会出现 404 错误无法获取 /api/stuff 我在这条路线上放了一个 console.log 并且它没有通过 我一直在寻找几个小时并尝试了几种没有结果的解决方案 这是我的代码,你能帮我解决和理解问题吗 谢谢大家
我的文件 server.js :
const http = require('http');
const app = require('./app');
const normalizePort = val => {
const port = parseInt(val,10);
if (isNaN(port)) {
return val;
}
if (port >= 0) {
return port;
}
return false;
};
const port = normalizePort(process.env.PORT || '4000');
app.set('port',port);
const errorHandler = error => {
if (error.syscall !== 'listen') {
throw error;
}
const address = server.address();
const bind = typeof address === 'string' ? 'pipe ' + address : 'port: ' + port;
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges.');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use.');
process.exit(1);
break;
default:
throw error;
}
};
const server = http.createServer(app);
server.on('error',errorHandler);
server.on('listening',() => {
const address = server.address();
const bind = typeof address === 'string' ? 'pipe ' + address : 'port ' + port;
console.log('Listening on ' + bind);
});
server.listen(port);
我的文件 app.js
const express = require('express');
// Pour gérer la demande POST provenant de l'application front-end,// nous devrons être capables d'extraire l'objet JSON de la demande. Il nous faudra le package body-parser
const bodyParser = require('body-parser');
// utilisation du package mongoose pour interagir avec MongoDb
const mongoose = require('mongoose');
// import du schema de donnees Users
const User = require('./models/user');
const path = require ('path');
const cors = require("cors");
const app = express();
mongoose.connect('mongodb+srv://user1:bz8FcivTvhnjxzog@cluster0.d3kne.mongodb.net/leads_manager?retryWrites=true&w=majority',{ useNewUrlParser: true,useUnifiedTopology: true })
.then(() => console.log('Connexion à MongoDB réussie !'))
.catch(() => console.log('Connexion à MongoDB échouée !'));
// éfinissez sa fonction json comme middleware global pour votre application,// juste après avoir défini les headers de la réponse :
app.use(bodyParser.json());
app.use(
bodyParser.urlencoded({
// to support URL-encoded bodies
extended: true,}),);
app.use (cors({
origin: "*",// restrict calls to those this address
methods: 'GET,PUT,POST,DELETE'
}))
app.use(express.static(path.join(__dirname,'build')));
// recupere un utilisateur
app.get('/api/stuff/:id',(req,res,next) => {
console.log(
'coucou'
);
});
module.exports = app;```
thanks
解决方法
使您的路由参数可选,因为当您在路由中添加 :id
时,现在它必须为您传递一些东西。示例 /api/stuff/someid2131
。要使其同时运行 /api/stuff
和 /api/stuff/someid2131
,请更改您到此 /api/stuff/:id?
的路线。
问题 :id?
表明您的路线是可选的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。