#node.js #express
#node.js #экспресс
Вопрос:
У меня есть этот файл, который называется server.js
import subRouter from "./routes/sub";
import prdRouter from "./routes/prd";
const app = express();
app.use("/sub", subRouter);
app.user("/prd", prdRouter);
app.listen(3000);
Затем я помещаю разные маршруты в разные папки. Предположительно, я хочу использовать маршрут из файла A в маршруте в файле B следующим образом:
sub.js:
const subRouter = Router();
subRouter.get("/some-endpoint", async (req, res) => {
//do something
res.send();
});
module.exports = subRouter;
prd.js:
const prdRouter = Router();
prdRouter.post("/some-prd-endpoint", async (req, res) => {
//call (/some-endpoint) in subRouter and receive its response
}
module.exports = prdRouter;
В prdRouter, как я могу вызвать /some-endpoint в subRouter?
Ответ №1:
Что вы могли бы сделать, если создать функцию и просто вызвать ее в другом файле.
sub.js
:
const subRouter = Router();
function doSomething() {
//...stuff
return 'hello';
}
subRouter.get("/some-endpoint", async (req, res) => {
const hello = doSomething();
res.send(hello);
});
module.exports = {
subRouter,
doSomething
};
prd.js
:
const sub = require('./sub');
const prdRouter = Router();
prdRouter.post("/some-prd-endpoint", async (req, res) => {
const hello = sub.doSomething();
});
module.exports = prdRouter;
Если вы конкретно хотите фактически вызвать конечную точку, тогда требуется обычный http-запрос. Установить https://github.com/axios/axios или что-то подобное.
sub.js
:
const subRouter = Router();
subRouter.get("/some-endpoint", async (req, res) => {
res.send();
});
module.exports = subRouter;
prd.js
:
const axios = require('axios');
const prdRouter = Router();
prdRouter.post("/some-prd-endpoint", async (req, res) => {
try {
const response = await axios.get('http://localhost:xxxx/some-endpoint'); // <--- replace here!
console.log(response);
} catch (error) {
console.error(error);
}
});
module.exports = prdRouter;
Замените xxxx
на то, что использует ваш экспресс-сервер в качестве номера порта.
Комментарии:
1. Мне нравится первый подход, он намного чище.