我有两个问题:
- 我可以在我的
server.js
中使用cors()
一次,而不是在我所有的路由器文件中调用use
吗? - 我可以
require
表达一次在我的server.js
,而不是在我所有的路由器文件调用它?
我的server.js
现在没有问题来处理CORS,但app
也处理users
路由器。
server.js
处理对/
的请求
const cors = require('cors');
const express = require('express');
const users = require('./routers/users');
const app = express();
app.use(cors());
app.use('/api/v1/user', users); // Register the user router
routers/users.js
处理对/users
的请求
const cors = require('cors'); // Required again
const express = require('express'); // Required again
const router = express.Router();
router.use(cors());
如果我不使用router.use(cors())
,我会收到一个CORS当我访问/api/v1/users
- 是的,你只需要在整个应用程序中使用一次cors()。
- 不,你需要
require
express
在每个文件,如果你是隔离你的路由在单独的文件
文件夹结构:
+ index.js
+ routers
+ users.js
+ server.js
+ controllers
+ user_controller.js
你的index.js文件应该是什么样的:
const cors = require('cors');
const express = require('express');
const serverRoutes = require('./routers/server');
const app = express();
// Allow cross origin access.
app.use(cors());
app.use('/', serverRoutes);
你的server.js文件应该是什么样的:
const router = require('express').Router();
const userRoutes = require('./users');
router.use('/api/v1/user', userRoutes); // Register the user router
module.exports = router;
你的user.js文件应该是什么样的:
const router = require('express').Router();
const userController = require('../controllers/user_controller');
router.get('/', (req, res) => {
userController.list(req, res); // or whatever your code is.
});
module.exports = router;