2017-05-24 5 views
0

Ich mache mehrere streamdata in Nodejs mit Express.Antwort ändern in express/nodejs

dies ist, wie ich eine URL machen:

app.get('/temp/1', function(req, res){ 
    res.send('hello, i am not modified') 
}) 

meine Frage ist: ist es möglich, die Reaktion der URL zu ändern?

ich so versucht:

app.get(/modify/1, function(req, res){ 
    app.get('/temp/1', function(req, res){ 
     res.send('hello, i am modified') 
    })  
    res.send('done'); 
} 

So würde ich denken, dass die Antwort geändert wird, aber nichts passiert tatsächlich. gibt es einen Weg, um es zu erreichen?

+0

https://github.com/mo22/express-modify-response https://github.com/axiomzen/express-interceptor – robertklep

+0

danke, aber können Sie mir ein Beispiel geben, wie Sie meinen Code anwenden können. – user2959870

Antwort

0

Hier ist ein Beispiel unter Verwendung von express-modify-response:

const modifyResponse = require('express-modify-response'); 
... 

let modify = modifyResponse(
    function(req, res)  { return true }, // always modify the response 
    function(req, res, body) { return 'hello, i am modified' } // the new response 
); 

app.get('/temp/1', modify, function(req, res){ 
    res.send('hello, i am not modified') 
}) 

EDIT: zweiter Versuch. Sie haben einen Endpunkt /temp/1, der eine bestimmte Antwort sendet, und Sie möchten einen Endpunkt /modify/1, der diese Antwort übernimmt und sie ändert.

Dies erfordert einige Abstraktion:

function someFunction(id) { 
    return 'hello, i am not modified'; 
} 

app.get('/temp/1', function(req, res) { 
    res.send(someFunction(1)); 
}); 

app.get('/modify/1', function(req, res) { 
    let value = someFunction(1); 

    // Remove the word `not`. 
    value = value.replace(/not /, ''); 

    res.send(value); 
}); 

So beide Handler die gleiche Funktion zu verwenden, dass die tatsächliche Ausgabe bereitstellt, aber /modify/1 modifiziert die Ausgabe, bevor sie an den Client zurück.

+0

danke, diese Methode Worte, aber nicht so, wie ich es will. Ich möchte die Antwort manuell ändern. Zum Beispiel gehe ich zu dieser URL ('/ modify/1') und diese URL ändert ('temp/1') url. Der obige Code ändert es direkt ohne etwas zu tun. – user2959870

+0

Es klingt, als sollten Sie eine Neustrukturierung Ihrer Anwendung in Erwägung ziehen, damit der Code, der für '/ temp/1' verwendet wird, direkt vom Handler für'/modify/1' aufgerufen werden kann, ohne "interne" Anfragen oder Antworten zu bearbeiten. – robertklep

+0

können Sie bitte ein Beispiel geben, wie es geht. Danke. – user2959870

Verwandte Themen