Wie leiten Sie eingehende URL-Anforderungen durch das hinzufügen weiterer Parameter
Problem: ich bekomme eine eingehende HTTP-Anfrage an meinen server-Anwendung. Die Anfrage ist so etwas wie dieses : http://example.com?id=abc. Ich muss analysieren diese Anforderung, patch zusätzliche URL-Parameter, und rufen Sie eine gehostete html-Datei. Also:
http://example.com?id=abc => http://example.com:8080/temp.html?id=abc&name=cdf.
Also der client sollte sehen temp.html
Hier der code:
function onRequest(request,response) {
if(request.method =='GET') {
sys.debug("in get");
var pathName = url.parse(request.url).pathname;
sys.debug("Get PathName" + pathName + ":" + request.url);
var myidArr = request.url.split("=");
var myid = myidArr[1];
//Call the redirect function
redirectUrl(myid);
}
http.createServer(onRequest).listen(8888);
function redirectUrl(myid) {
var temp='';
var options = {
host: 'localhost',
port: 8080,
path: '/temp.html?id=' + myid + '&name=cdf',
method: 'GET'
};
var req = http.request(options, function(res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
temp = temp.concat(chunk);
});
res.on('end', function(){
return temp;
});
});
req.end();
return temp;
}
Obwohl dies eine wirklich dumme Art und Weise des Gehens über dieses Problem, ich sehe die Antwort in der res.Ende() callback. Wie verbreiten Sie diese auf der übergeordneten aufrufenden Funktion onRequest ?
Gibt es eine einfachere Möglichkeit, dies zu tun, nur mit Knoten ? Ich weiß, dass es Wege gibt, um zu dienen statische html-Dateien. Allerdings brauche ich, um URL-Parameter übergeben temp.html - also ich bin mir nicht sicher, wie dies zu tun.
InformationsquelleAutor Pradeep Banavara | 2012-05-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur Fragen, wenn ein einfacher redirect würde dem Zweck dienen:
Du bist herzlich willkommen. Könnten Sie die Antwort akzeptieren, bitte.
InformationsquelleAutor almypal
Dies ist ein klassischer Fehler, wenn Sie kommen, um die asynchrone Welt. Sie nicht
return
den Wert der Datei, übergeben Sie eine callback als parameter, und führen Sie es mit dem end-Wert etwa so:InformationsquelleAutor alessioalex
Müssen Sie die original -
response
zu IhremredirectUrl
- Funktion, und lassen Sie ihn schreiben Sie die Antwort. So etwas wie:Aufruf:
Auch, da hast du schon das Parsen der url, warum nicht:
InformationsquelleAutor Linus Gustav Larsson Thiel