Nodejs express 中的路由问题,望高人指点

发布于 1周前 作者 gougou168 来自 nodejs/Nestjs

Nodejs express 中的路由问题,望高人指点

在网上我看到有路由的用例

app.get('/polls/polls', routes.list);
app.get('/polls/:id', routes.poll);
app.post('/polls', routes.create);

一般都是写到 app.js 中的,

我想把 polls 下的这三个请求写到一个 polls.js 的路由文件中。我在 app.js 中写的是:

app.use('/polls', polls);

polls.js 里:

router.get('/polls', function(req, res, next) {
});

router.get(’/:id’, function(req, res, next) {}); router.post(’/’, function(req, res, next){});

我测试第二个有 id 的接口,无法路由到。 请问这种写法可以吗?


4 回复

可以使用 Express.Router.
在 polls.js 文件中这样写

const express = require(‘express’);
var router = express.Router();

router.get("/" ,(req,res) =>{
//todo
});

//其他类同

exports.routers = router;


我记得好像第二种写法有一个额外的 require ?

上面写法没错,不过建议改成这样
POST/GET /polls
GET /polls/:id

在Node.js中使用Express框架处理路由问题是一个常见的需求。下面是一个简单的示例,展示如何设置和使用路由。

首先,确保你已经安装了Express。如果还没有安装,可以使用npm进行安装:

npm install express

然后,你可以创建一个基本的Express应用,并设置一些路由。以下是一个示例代码:

const express = require('express');
const app = express();
const port = 3000;

// 定义一个基本的GET路由
app.get('/', (req, res) => {
  res.send('Hello, World!');
});

// 定义一个带参数的GET路由
app.get('/user/:id', (req, res) => {
  const userId = req.params.id;
  res.send(`User ID: ${userId}`);
});

// 定义一个POST路由
app.post('/login', express.json(), (req, res) => {
  const { username, password } = req.body;
  // 这里可以进行身份验证逻辑
  res.send('Login successful');
});

app.listen(port, () => {
  console.log(`Server is running at http://localhost:${port}`);
});

在上面的代码中,我们定义了三个路由:

  1. 一个基本的GET路由,访问根路径时返回"Hello, World!"。
  2. 一个带参数的GET路由,访问/user/:id时返回用户ID。
  3. 一个POST路由,处理登录请求,并假设请求体为JSON格式。

运行这个代码后,你可以在浏览器中访问相应的路径,或者使用工具如Postman来测试POST请求。希望这个示例能帮助你解决Node.js Express中的路由问题。

回到顶部