You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js Restify框架如何实现类似Laravel的路由分组功能?

Restify路由分组能力说明

Restify完全提供和Laravel路由分组逻辑高度匹配的能力,可以批量配置统一前缀、路由命名前缀、中间件等属性,完美适配你习惯的API版本控制、批量路由权限控制等场景,迁移成本极低。

基础用法示例

对应你给出的Laravel路由代码,等价的Restify 8.x+版本实现如下:

const restify = require('restify');
const server = restify.createServer();

// 加载基础解析插件
server.use(restify.plugins.bodyParser());

// 引入对应控制器(对应Laravel的命名空间加载逻辑)
const RadioController = require('./app/controllers/RadioController');
const RegisterController = require('./app/controllers/Auth/RegisterController');
const LoginController = require('./app/controllers/Auth/LoginController');
// 引入鉴权中间件(对应Laravel的auth:api)
const authApi = require('./app/middleware/authApi');

1. 公开V1接口分组(对应Laravel的$API_V1配置)

server.group({
  prefix: '/v1',
  name: 'api.' // 对应Laravel的as属性,路由命名前缀
}, (group) => {
  group.get('/stations', RadioController.listStations);
  group.get('/stations/country', RadioController.listStationsByCountry);
  group.get('/stations/genres', RadioController.listStationsGenres);
});

2. 需鉴权V1接口分组(对应Laravel的$API_V1_RESTRICTED配置)

server.group({
  prefix: '/v1',
  name: 'api.',
  middleware: [authApi] // 支持传入多个中间件,批量应用到分组下所有路由
}, (group) => {
  group.post('/stations', RadioController.addStation);
  group.put('/stations/:id', RadioController.updateStation);
  group.del('/stations/:id', RadioController.deleteStation);
  group.get('/user', RadioController.CheckUser);
});

3. 鉴权端点V1分组(对应Laravel的$API_V1_REGISTER配置)

server.group({
  prefix: '/v1',
  name: 'api.'
}, (group) => {
  group.post('/register', RegisterController.register);
  group.post('/login', LoginController.login);
  group.get('/logout', LoginController.logout);
});

额外使用说明

  • Restify支持嵌套分组,可在group的回调函数中继续调用group方法创建子分组,子分组会自动继承父分组的前缀、中间件等配置,和Laravel嵌套分组逻辑完全一致
  • 中间件优先级和Laravel对齐:单路由中间件 > 分组中间件 > 全局中间件
  • 如果你使用的是Restify 7.x及更早版本,group方法可直接传前缀字符串作为第一个参数,分组中间件可以通过group.use(中间件)方法单独挂载

内容的提问来源于stack exchange,提问作者Hojzerice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 03:45:04