2015-02-14 2 views
3

Я создаю изоморфное приложение React, которое использует express.js на сервере. Клиентское приложение делает несколько запросов AJAX другому экспресс-обработчику, который в настоящее время влечет за собой выполнение ими нескольких HTTP-запросов.Как вызвать обработчик express.js из другого обработчика

В качестве оптимизации я хотел бы перехватить запросы. Я знаю, что серверы обрабатывают и вызывают их напрямую (таким образом, избегая стоимости ухода из приложения). Я имею доступ к маршрутизатору приложений, чтобы узнать, какие маршруты он обрабатывает, но я изо всех сил стараюсь найти лучший способ начать новый запрос. Поэтому мой вопрос:

Как получить экспресс, чтобы обрабатывать HTTP-запрос, который поступает из программного источника, а не из сети?

+2

Можете ли вы добавить несколько образцов? – Daniel

ответ

-1

Я бы предложил создать общий сервис и потребовать его в обоих обработчиках. То, что я делаю, это разбить бизнес-логику в сервисе и создать контроллеры, которые обрабатывают запрос и вызывают определенные сервисы таким образом, вы можете использовать несколько сервисов в одном контроллере, например.

router.js

var clientController = require('../controllers/client-controller.js'); 
module.exports = function(router) { 
    router.get('/clients', clientController.getAll); 
}; 

клиент-controller.js

var clientService = require('../services/client-service.js'); 
function getAll(req, res) { 
    clientService.getAll().then(function(data) { 
    res.json(data); 
    }, function(err) { 
    res.json(err); 
    }); 
} 

module.exports.getAll = getAll; 

клиент-service.js

function getAll() { 
    // implementation 
} 

module.exports.getAll = getAll; 

u также может использовать что-то вроде http://visionmedia.github.io/superagent/, чтобы сделать http-звонки с контроллеров и использовать их.

+0

Извините, это не отвечает на мой вопрос. Я создаю изоморфную структуру, которая будет потребляться другими, поэтому не может вносить изменения в их код. –