我可以将cors从app扩展到路由器吗?



我有两个问题:

  • 我可以在我的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

时,浏览器上的
  1. 是的,你只需要在整个应用程序中使用一次cors()。
  2. 不,你需要requireexpress在每个文件,如果你是隔离你的路由在单独的文件

文件夹结构:

+ 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;

最新更新