我有使用 ExpressJs 開發的不同版本的 api,我通過標題或通過這樣的查詢字串獲取版本詳細資訊 example.com/users?version=1,example.com/users?version=2
或者我進入標題。
我想通過查詢引數路由我的應用程式 api 我通過 url
app.js
app.use('/', (req, res, next) => {
app.use(require('./v' req.query.version));
next();
});
我在檔案夾中有兩個版本 v1/index.js
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World! v01')
});
module.exports = app;
并且v2/index.js作為
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World! v02')
});
module.exports = app;
當我通過 url 呼叫 api 時,我只會得到我首先呼叫的版本的回應
就像我第一次打電話example.com/users?version=1一樣'Hello World! v01',我會得到回應,
在此之后,如果我打電話,example.com/users?version=2我會得到回應'Hello World! v01'
如果我在啟動腳本后第一次呼叫 version=2,我'Hello World! v02'每次都會得到回應。
我不想讓應用程式像example.com/v1他們那樣使用查詢引數或通過標題來解決這個版本問題。
uj5u.com熱心網友回復:
為什么要動態匯入可能會導致問題。
假設我通過 example.com/users?version=23424
// v1/index
const express = require("express");
const router = express.Router();
router.get("/", (req, res) => {
res.send("Hello World! v01");
});
module.exports = router;
// v2/index
const express = require("express");
const router = express.Router();
router.get("/", (req, res) => {
res.send("Hello World! v02");
});
module.exports = router;
// server
const express = require("express");
const app = express();
const v1 = require("./v1/index");
const v2 = require("./v2/index");
app.use("/", (req, res, next) => {
const { version } = req.query;
if (version !== "1" && version !== "2") {
return res.json({
message: "Not found",
});
}
const router = version === "1" ? v1 : v2;
router(req, res, next);
next();
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/399842.html
標籤:javascript 节点.js 表达
上一篇:Robot.js非同步點擊按鍵
