2017-10-12 5 views
1

J'essaie d'appeler une API College Score Card en utilisant Express et Request. Lorsque je cherche une école spécifique, je reçois des résultats de plusieurs écoles, mais pas de l'école que j'ai cherchée. Voici une partie de mon code:Appel API externe en utilisant 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

ajouté le code de formulaire à votre question en utilisant le lien "modifier" et corrigé votre mise en forme. S'il vous plaît apprendre à formater correctement votre code ici pour le rendre facile à lire. – jfriend00

+0

Qu'est-ce que 'requestUrl' et d'où vient-il? À l'heure actuelle, il ne semble pas que vous utilisiez les valeurs du formulaire dans votre requête et il semble que les résultats obtenus dépendront entièrement de ce qu'est 'requestUrl'. Donc, fondamentalement, vous ne nous montrez pas la partie la plus importante du code. – jfriend00

Répondre

0

Vous devez intégrer le nom de l'école dans l'URL. De votre formulaire qui est défini pour method=GET, le nom viendra req.query.school_name. Donc, au lieu de simplement envoyer la demande à requestUrl, vous l'envoyez à:

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

qui ajoutera ceci sur la fin de l'URL:

&school_name=Pepperdine 

Ou, mettez dans votre code, il serait ressembler à ceci:

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

J'ai essayé ceci, et je reçois un message disant 'En attendant l'hôte local ...', et rien ne se passe. – user8767190

+0

@ user8767190 - Avez-vous réellement rempli 'res.send()' pour retourner du contenu? Vous devez envoyer une réponse à la demande ou le navigateur se trouve juste et attend éternellement (éventuellement expirer). Vos instructions 'console.log()' sur le serveur ont-elles montré un résultat? – jfriend00

+0

Cela fonctionne maintenant. J'avais besoin d'utiliser school.name. Merci de votre aide! – user8767190