2017-10-12 7 views
1

Ich versuche, eine College Score Card API mit Express und Anfrage aufrufen. Wenn ich nach einer bestimmten Schule suche, bekomme ich Ergebnisse von mehreren Schulen, aber nicht von der Schule, nach der ich gesucht habe. Hier ist ein Teil meines Code:External API Anruf mit Express

var fields = '_fields=school.name,2013.aid.median_debt.completers.overall,2013.repayment.1_yr_repayment.completers,2013.earnings.10_yrs_after_entry.working_not_enrolled.mean_earnings&page=100'; 

var requestUrl = 'https://api.data.gov/ed/collegescorecard/v1/schools.json?api_key=' + apiKey + '&' + fields; 



module.exports = function(app) { 
    app.get('/school', function(req, res, next) { 
     request(requestUrl, function (error, response, body) { 
      if (!error && response.statusCode == 200) { 
       var json = JSON.parse(body); 
       console.log(json); 
      } else { 
       console.log("There was an error: ") + response.statusCode; 
       console.log(body); 
      } 
     }); 
    }) 
}; 

HTML:

<form action="/school" method="GET"> 
    <input type="text" class="form-control" name="school_name" value="" id="enter_text"> 
    <button type="submit" class="btn btn-primary" id="text-enter- button">Submit</button> 
</form> 
+0

html:

\t \t
user8767190

+0

hinzugefügt, um die Form-Code in Ihre Frage über den Link "Bearbeiten" und reparierte die Formatierung. Bitte lesen Sie hier, wie Sie Ihren Code richtig formatieren können, damit er leichter zu lesen ist. – jfriend00

+0

Was ist 'requestUrl' und woher kommt es? Im Moment scheint es nicht, dass Sie die Formularwerte überhaupt in Ihrer Anfrage verwenden und es scheint, dass die Ergebnisse, die Sie erhalten, völlig davon abhängen, was 'requestUrl' ist. Im Grunde zeigen Sie uns nicht den wichtigsten Teil des Codes. – jfriend00

Antwort

0

Sie müssen die Schulnamen in die URL integrieren. Von Ihrem Formular, das für method=GET festgelegt ist, wird der Name in req.query.school_name kommen. Also, statt nur die Anforderung an requestUrl Senden Sie es an:

requestUrl + "&school_name=" + req.query.school_name 

die diese auf das Ende der URL hinzufügen wird:

&school_name=Pepperdine 

Oder, um es in Ihren Code, würde es wie folgt aussehen:

module.exports = function(app) { 
    app.get('/school', function(req, res, next) { 
     request(requestUrl + "&school_name=" + req.query.school_name, function (error, response, body) { 
      if (!error && response.statusCode == 200) { 
       var json = JSON.parse(body); 
       console.log(json); 
       res.send(...); // send some response here 
      } else { 
       console.log("There was an error: ") + response.statusCode; 
       console.log(body); 
       res.send(...)  // send some response here 
      } 
     }); 
    }) 
}; 
+0

Ich habe dies versucht, und ich bekomme eine Nachricht mit dem Text "Warten auf lokalen Host ...", und nichts passiert. – user8767190

+0

@ user8767190 - Haben Sie 'res.send()' wirklich ausgefüllt, um etwas Inhalt zurückzugeben? Sie müssen eine Antwort auf die Anfrage senden oder der Browser sitzt nur und wartet für immer (schließlich Zeitlimit). Haben Ihre 'console.log()' Anweisungen auf dem Server ein Ergebnis gezeigt? – jfriend00

+0

Es funktioniert jetzt. Ich musste Schule benutzen. Danke für Ihre Hilfe! – user8767190