Мне любопытно, есть ли способ выдать внутренний запрос в экспресс, не пройдя все фактические накладные расходы на реальный запрос. Пример показывает, вероятно, мотивация лучше:Выдача внутреннего экспресс-запроса
app.get("/pages/:page", funciton(req, res)
{
database_get(req.params.page, function(result)
{
// "Page" has an internal data reference, which we want to inline with the actual data:
request(result.user_href, function(user_response)
{
result.user = user.response.json;
res.send(result);
});
});
});
/// ....
app.get("/user/:name", function() ...);
Итак, что мы имеем здесь маршрут, данные которого требуется сделать еще один запрос для получения дополнительных данных. Я хотел бы получить к нему доступ, просто сделав что-то вроде app.go_get (user_href) вместо фактического запроса тяжелого веса. Теперь я спросил, и стратегия, похоже, «расщепляет вашу логику». Тем не менее, на самом деле это требует от меня дубликата логики, так как рекурсивные данные правильно ссылаются через URL-адреса (как в примере выше). Поэтому я в конечном итоге вынужден выполнять собственные маршруты маршрутизации и дублирования.
если вы расчитываете в использовании, что функциональность маршрутов некоторых других местах, то вы должны создать модуль, чтобы содержать указанную функцию для выполнения операции таким образом, вы можете позвонить функция просто вызывает модуль из любого места в вашем приложении –
Я считаю, что я объяснил, почему этот вариант не был жизнеспособным для меня (хотя я могу не понимать ваш ответ). В принципе, маршрут является * частью функциональности * и поэтому не может быть помещен в отдельный модуль без написания парсера маршрута: данные похожи на data = {href: some_url}. Поэтому мне нужно иметь возможность делать get_data_at_url (data.some_url), поэтому необходимо, чтобы маршрутизация имела место. –
Если вы управляете маршрутизатором, вы можете сделать что-то вроде app.get (module.myroute), где myroute = function (req, res) {} внутри модуля, где бы вы ни занимались. если ваш обработчик маршрута не использует переменные модуля, вы должны быть в порядке. для использования этой функции вы можете построить свои потоки req и response так же, как и у узла –