【问题标题】:recovery of parameter from nodejs express impossible从 nodejs express 恢复参数是不可能的
【发布时间】:2020-12-20 21:57:56
【问题描述】:

大家晚上好 我正在尝试使用 mongodb 设置快速服务器 只要我定义没有参数的路由,我的测试就可以使用邮递员工作,但是一旦我创建了一个带参数的 get 路由,我就会遇到 404 错误 Cannot GET /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

【问题讨论】:

    标签: node.js express parameters get postman


    【解决方案1】:

    使您的路由参数可选,因为当您在路由中添加:id 时,您现在必须为它传递一些东西。示例/api/stuff/someid2131。要使其同时适用于 /api/stuff/api/stuff/someid2131,请将您的路线更改为此 /api/stuff/:id?

    问题:id? 表明您的路线是可选的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-07
      • 2023-02-05
      • 1970-01-01
      • 2019-12-13
      • 1970-01-01
      • 1970-01-01
      • 2020-05-22
      • 2021-09-15
      相关资源
      最近更新 更多