首页 > 解决方案 > 服务器和客户端应该如何交互

问题描述

我刚开始使用 nodejs 后端,所以这可能是一个愚蠢的问题。

小信息

我得到了我的客户端(localhost:8080)和我的 server.js(localhost:3000)。我为我的路线做了一些路线server.js(见下面的文件)。

问题

现在,如果我尝试访问我的服务器上的路由,例如localhost:3000/users/4,我会得到预期的结果——创建了 4 个假用户。但是,如果我尝试将后缀附加users/4到客户端:(localhost:8080/users/4),我会收到错误消息!Cannot GET /users/4. 同样,cannot GET *SOMETHING*如果我尝试其他路线之一,我会得到一个。

我误解了什么吗?我不应该能够将路由附加到客户端 url,然后再次获取 res(响应)吗?(当然,只要服务器正在运行,或者这不是它的工作方式?)。如果有人能澄清它是如何工作的,那就太好了。

routes.js(我在这个文件中得到了所有的路由)

    var faker = require("faker");

var appRouter = function (app) {


  app.get("/", function (req, res) {
    res.status(200).send({ message: 'Welcome to our restful API' });
  });

  app.get("/user", function (req, res) {
    var data = ({
      firstName: faker.name.firstName(),
      lastName: faker.name.lastName(),
      username: faker.internet.userName(),
      email: faker.internet.email()
    });
    res.status(200).send(data);
  });

 app.get("/users/:num", function (req, res) {
   var users = [];
   var num = req.params.num;

   if (isFinite(num) && num  > 0 ) {
     for (i = 0; i <= num-1; i++) {
       users.push({
           firstName: faker.name.firstName(),
           lastName: faker.name.lastName(),
           username: faker.internet.userName(),
           email: faker.internet.email()
        });
     }

     res.status(200).send(users);

   } else {
     res.status(400).send({ message: 'invalid number supplied' });
   }

 });
};

module.exports = appRouter;

服务器.js

var express = require("express");
var bodyParser = require("body-parser");
var routes = require("./routes/routes.js");
var app = express();

const server_port = process.env.PORT || 3000;


app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

routes(app);

var server = app.listen(server_port, function () {
    console.log("app running on port.", server.address().port);
});

标签: node.js

解决方案


对我来说,这适用于(例如):http: //127.0.0.1 :8081/testit/35 ::

app.get('/testit/:bid', function(req, res){
 res.send('testit' + req.params.bid);
});

我会建议你减少你的问题。所以,从类似于我的路线开始,然后从那里开始建造。


推荐阅读