快速休息api调用角2如何

时间:2017-02-10 05:04:00

标签: rest angular

问候语, 从角度2调用rest api我有一个小问题。 我有一个休息api端点:

api/room/byName/:roomName

如果我使用postful等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());

Express端点:

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

2 个答案:

答案 0 :(得分:2)

首先确保您已启用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());

答案 1 :(得分:2)

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());