簡體   English   中英

用Angular 2快速表達api調用

[英]Express rest api call with angular 2 How to

問候,從角度2調用rest api有一個小問題。我有rest api端點:

api/room/byName/:roomName

如果我使用郵遞員等restfull工具並調用api http://localhost:3000/api/room/byName/roomname1則可以正常工作並獲得結果。 但是當我可以從angular2調用它時,其余api甚至都沒有被調用。

 let params: URLSearchParams = new URLSearchParams();
 params.set('roomName', roomName);
  return this
  .http
  .get('/api/room/byName',{search:params})
  .map((response: Response) => response.json());

我敢肯定,我沒有正確地稱呼它。 感謝您如何從角度2調用它的幫助。

謝謝

編輯

得到建議后,這是我的代碼,但是仍然沒有運氣:角度調用:

    return this.http
  .get('/api/room/byName/'+roomName)
  .map((res: Response) => res.json());

快速端點:

var rooms = express.Router();
rooms.get('/byName/:roomName', function(req,res){

var roomn = req.params.roomName;
console.log('Looking by roomName: ' + roomn);
Room.findOne({ "roomName": roomn }, function(err, rooms) {
    if (err) {

        next(err);
     } else {

        res.json(rooms);
     }
 });

});

如果我從瀏覽器中調用端點,則此方法工作正常: http:// localhost:3000 / api / room / byName / test

首先請確保您已啟用CORS

第二:改變這個

let params: URLSearchParams = new URLSearchParams();
params.set('roomName', roomName);
return this
  .http
  .get('/api/room/byName',{search:params})
  .map((response: Response) => response.json());

至:

return this
  .http
  .get('/api/room/byName/'+ roomName)
  .map((response: Response) => response.json());

Http get只接受url而不是body作為參數。

嘗試:

let params: URLSearchParams = new URLSearchParams();
 params.set('roomName', roomName);
  return this
  .http
  .get(`/api/room/byName/${roomName}`)
  .map((response: Response) => response.json());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM