2017-05-09 4 views
0

Ich bin eine API in Node bauen und kämpfe um etwas herauszufinden. Ich weiß nämlich, wie man Routen vom Typ /api/:paramA/:paramB baut. In diesem Fall gibt es zwei Parameter. so etwas wie diesesExpress + Knoten Route mit mehreren Parametern in Abfragezeichenfolge

würde der Code sein:

router.get('/test/:paramA/:paramB', function(req, res) { 
    res.json({ message: 'hooray! welcome to our api!' + req.params.paramA + req.params.paramB}); 
}); 

Wie könnte man eine Route erstellen, die auf so etwas wie /api?paramA=valueA&paramB=valueB reagieren würde?

Antwort

1

Wenn Sie sicher sind, über die GET-Parameter, die übergeben werden, so könnte man es so leicht tun:

router.get('/api', function(req, res) { 
    if(typeof req.params.paramA !== 'undefined' && typeof req.params.paramB !== 'undefined') { 
    let paramA = req.params.paramA, 
     paramB = req.params.paramB; 
    //do something with paramA and paramB 
    } 
}); 
+0

Was ist, wenn ich prüfen muss, ob beide Parameter vorhanden sind? – MadPhysicist

+0

Das heißt, ist das immer noch eine solide Lösung für diesen Fall? – MadPhysicist

+0

Habe gerade meine Antwort bearbeitet. –

1

ich das am Ende mit. Dieser Code hat genau das gemacht, was ich in der ursprünglichen Frage gemacht habe.

router.get('/api', function(req, res) { 
    if(typeof req.query.paramA !== 'undefined' && typeof req.query.paramB !== 'undefined') { 
    let paramA = req.query.paramA, 
     paramB = req.query.paramB; 
    //do something with paramA and paramB 
    } 
}); 
+0

This ist nicht der empfohlene Weg, dies zu tun. 'req.query' ist der richtige Ort für den Zugriff auf analysierte Parameter aus der Abfragezeichenfolge. – jfriend00

+0

Ja, natürlich. Danke, dass du das unterstrichen hast! Ich habe den Code falsch kopiert. – MadPhysicist

2

Um diese URL in einer Route mit Express zu verwenden:

/api?paramA=valueA&paramB=valueB 

Sie tun dies:

router.get('/api', function(req, res) { 
    console.log(req.query.paramA);  // valueA 
    console.log(req.query.paramB);  // valueB 
    console.log(req.query.paramC);  // undefined (doesn't exist) 
}); 

Abfrageparameter in die req.query object analysiert werden. Wenn der Name des Abfrageparameters nicht in der Abfragezeichenfolge vorhanden ist, ist diese Eigenschaft nicht im query.query-Objekt vorhanden. Wenn Sie versuchen, sie zu lesen, wird undefined zurückgegeben. Beachten Sie, dass alle Werte Strings sind. Wenn Sie möchten, dass sie eine Zahl oder ein anderer Datentyp sind, müssen Sie sie in diesen anderen Typ analysieren.