2017-09-01 112 views
0

在下面的代碼中,我的快遞服務器正在處理來自天氣應用的獲取請求。當最初加載頁面以獲取位置時,會調用一個函數。然而,我使用的api,'geolocation',使用一個post請求來獲取位置數據。在獲取路徑內發出一個post請求unrESTful?

對我來說,在我的獲得路線裏面發一個帖子請求是不可靠的嗎?

router.get('/', function(req,res){ 
    axios.post(`https://www.googleapis.com/geolocation/v1/geolocate?key=${googleGeo}`, { 
     considerIp: "true", 
    }) 
    .then((data) => { 
     return {'lat': data.data.location.lat, 'lng':data.data.location.lng } 
    }) 
    .catch(error => { 
     console.log(error) 
    }) 
}); 
+1

根本不是。你的GET路線正在做一些工作。 RESTful不關心它。 –

+0

如果你正在對同一個應用程序進行POST,它會很不穩定。 –

+0

與您的問題沒有嚴格關係,但請注意,Google API請求的發件人IP將是您的Node服務器的,而不是發起客戶端的。客戶端的IP可以通過['req.ip'](http://expressjs.com/en/api.html#req.ip)訪問(如果使用的是ExpressJS,那你自己),但我認爲Google的API可以讓你傳遞它。如果這會成爲問題,你可能需要另一個API。 – tavnab

回答

0

只要你對你的客戶端API是如何呈現其資源的RESTful,它不應該不管你怎麼弄/存儲/管理後端的數據,至少就REST關注。

這就是說,不要忘了發送響應(例如res.json({lat:..., lng:...})),而不是從你的.then()處理程序返回,並在您的.catch()處理程序發送一個錯誤狀態代碼(例如res.sendStatus(500))。

0

我不會掛在單詞post上,特別是當你使用別人的API時。重要的是,當有人發出GET請求時,它不應該改變狀態。在您的情況下,API可能使用POST方法,以便您不需要將請求對象粘貼到查詢字符串中,或​​者可能由於請求的大小限制。它只是獲取地理數據 - 不會改變狀態。

如果它突變狀態,它應該是POSTPUTDELETE。如果它只是真正的只讀,無論您在引擎蓋下面調用的API如何,GET總是合適的。