게시 요청을 처리 한 다음 다른 서버에 POST 요청을 수행 한 다음 반환 된 정보를 기반으로 사용자를 리디렉션하는 웹 응용 프로그램을 구축하고 있습니다.별도의 노드 모듈에서 Express를 사용하여 POST 요청 수행
최종 결과는 사용자 이름에 사용자 유형을 입력하고 제출 -> 응용 프로그램이 게시물을 처리하고 사용자 이름을 취함 -> 응용 프로그램이 사용자 이름 -> 서버가 사용자의 서버 URL을 반환하는 외부 서버에 게시를 수행함 -> 응용 프로그램이 사용자를 해당 응용 프로그램으로 리디렉션해야합니다.
server.js
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var findUser = require('./findUserInstance')
// Create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })
app.use(express.static('public'));
app.get('/index.htm', function (req, res) {
res.sendFile(__dirname + "/" + "index.htm");
})
app.post('/process_post', urlencodedParser, function (req, res) {
// Prepare output in JSON format
response = {
username:req.body.username
};
var uUrl = findUser.url(response.username);
console.log("redirecting to " + uUrl);
res.redirect(findUser.url(response.username));
res.end(JSON.stringify(response));
})
var server = app.listen(8081, function() {
var host = server.address().address
var port = server.address().port
console.log("App listening at http://%s:%s", host, port)
})
findUserInstance.js
exports.url = function(uName) {
var http = require("https");
var uUrl;
var options = {
"method": "POST",
"hostname": "removed",
"port": null,
"path": "removed",
"headers": {
"appkey": "removed",
"content-type": "application/json",
"cache-control": "no-cache",
"Accept": "application/json",
"postman-token": "7d87bcf1-8e11-9717-2f6e-8150a5625acd"
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function() {
var body = Buffer.concat(chunks);
var jsoncontent = JSON.parse(body);
uUrl = jsoncontent.rows[0].url;
console.log("The following should be: user.instance.url.com)
console.log(jsoncontent.rows[0].url);
return uUrl; //The information that I want to return to server.js
});
});
req.write(JSON.stringify({username: uName}));
req.end();
}
문제가 리디렉션을 수행 할 수 있도록 server.js 모듈 외부 포스트 모듈로부터 정보를 돌려 보내는 것이다. 현재 함수에서 반환 된 uUrl 변수 (게시물의 URL로 올바르게 채워짐)가 있습니다. 그러나 findUserInstance 모듈은 null을 반환합니다.
findUserInstance 모듈에서 server.js 모듈로 uUrl의 값을 가져 오는 방법은 무엇입니까?
감사합니다! 이것은 멋지지만 여전히 문제가 있습니다. 이제 url 함수는 [object Object]를 반환합니다 (값 없음). server.js에서 무엇인가를 수정해야합니까? – mcheli