Я построил, используя express(), различные методы. для простоты позвольте мне предположить, что я построил 2 функции POST(), и я хочу иметь возможность использовать их самостоятельно, а также объединить их через промежуточное программное обеспечение для использования в комбайне.NODEJS как подключить несколько express.method() через промежуточное программное обеспечение
app.post('/create_obj_1' , function (req,res) {
//create Object_type_1
// send Object_type_1 via EXTERNAL API to somewhere
res.json({{ "statusCode": 200, "message": "OK" }
}
app.post('/create_obj_2' , function (req,res) {
//create Object_type_2
// send Object_type_2 via EXTERNAL API to somewhere
res.json({{ "statusCode": 200, "message": "OK" }
}
Я хочу иметь новый пост(), который может вызвать оба 2 других (но по-прежнему поддерживать автономный производит вызов оригинальной 2 я думаю, что это возможно с помощью промежуточного слоя, но я не знаю, как - это то, как я думал, что новый POST() должен выглядеть -
app.post('/create_obj_all' , function (req,res) {
//I want to invoke the create_obj_1 & create_obj_2 , check all OK, and finish
res.json({{ "statusCode": 200, "message": "OK" }
}
Я не уверен, как подходить к использованию промежуточного слоя в таком случае
сверху -. как я могу подключить их использовать по одному другие res? скажем, EXTERNAL API возвращает некоторое значение из obj_1 создание, которое я хочу использовать в obj_2 пост() функции ..
псевдокэлеровой код моей попытки использовать запрос() внутри middlware_1 -
var middle_1 = function (req, res, next) {
req.middle_1_output = {
statusCode : 404,
message : "fail_1"
}
var options = {
method: 'PUT', url: `EXTERNAL_API`, headers:
{
'cache-control': 'no-cache',
'content-type': 'application/x-www-form-urlencoded',
apikey: `KEY`
}
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
// CODE THAT DO SOMETHING AND GET INFORMATION
// OLD WAY OF res.send here , to allow using in post.POST() was - res.status(200).send(body);
//res.status(200).send(body);
req.middle_1_output.statusCode = 200;
req.middle_1_output.message = "hello world";
});
next(); // trigger next middleware
}
Вы должны вызвать 'next' из обратного вызова, как это было сделано в моем втором примере. В вашем случае следующее промежуточное программное обеспечение вызывается перед завершением 'request'. –
Hey Blaze, я думаю, что он начинает работать, но у меня возникла проблема с этим, так как я использую 2 request() внутри своего middleware_1 (один за другим), поэтому я думаю, что называть next() в конце 1-го request() создает проблему для второго запроса(), так как я получаю сообщение об ошибке req.middle_1_output.statuscode is undefined, когда я пытаюсь присвоить ему значение в конце второго запроса(). Могу ли я включить свой первый запрос() в middleware_1 также в промежуточное ПО? –
Обновите свой вопрос, я отвечу, отредактировав свой последний ответ. –