2017-10-12 72 views
1

我試圖使用Express和請求調用College Score Card API。當我搜索一所特定的學校時,我收到了幾所學校的成績,但沒有收到我搜索的學校的成績。這裏是我的代碼部分:使用Express的外部API調用

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: <形式行動= 「/學校」 方法= 「GET」> \t \t <按鈕類型= 「提交」 類= 「BTN BTN-主」 ID = 「文本進入─ 鍵」>提交 – user8767190

+0

添加形式碼到您的問題使用「編輯」鏈接並修復您的格式。請了解如何在此處正確設置代碼格式,以便於閱讀。 – jfriend00

+0

什麼是'requestUrl',它來自哪裏?現在,在你的請求中並沒有出現你使用表單值的情況,看起來你得到的結果完全取決於requestUrl是什麼。所以,基本上你沒有向我們展示代碼中最重要的部分。 – jfriend00

回答

0

你需要把校名到URL。從您設置爲method=GET的表單中,名稱將出現在req.query.school_name中。所以,而不只是將請求發送到requestUrl的,你把它發送到:

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

這將增加該到URL的末尾:

&school_name=Pepperdine 

或者,把你的代碼,它會看起來像這樣:

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

我試過了,我收到一條消息,說'等待本地主機...',沒有任何反應。 – user8767190

+0

@ user8767190 - 您是否實際填寫了'res.send()'來返回一些內容? 您必須發送對請求的響應,或者瀏覽器只是坐下來等待(最終超時)。你的'console.log()'語句在服務器上顯示了結果嗎? – jfriend00

+0

現在有效。我需要使用school.name。謝謝你的幫助! – user8767190