Angular 5:有没有办法隐藏API调用?还是将其设为私有?

use*_*497 1 angular

我开始学习Angular,并发现可以从开发人员工具中看到对后端的每次调用。所以当我得到这样的方法/函数时:

getUser(userId){
    return this.http.post('server/page/get-user', {id:userId});
}
Run Code Online (Sandbox Code Playgroud)

然后在某些组件中,我会这样称呼它:

this.userService.getUser(2).subscribe((data)=> {
    console.log(data)
})
Run Code Online (Sandbox Code Playgroud)

根据发布的用户ID,基本上返回用户信息(名称,地址等)的内容。如果要获取随机的用户信息,他们难道不可以通过在请求有效载荷中使用随机数来对此端点进行API调用,而只是获取该用户信息吗?

我读到一些解决此问题的方法是使用JWT,它基本上是对有效负载进行加密的方法,但是没有选项可以使此api调用仅在我的应用程序中可用吗?还是至少使其对开发人员工具不可见?

Que*_*tin 6

有没有办法隐藏API调用?还是将其设为私有?

否。浏览器属于用户。它所做的是在他们的控制之下,而不是您的。

根据发布的用户ID,基本上返回用户信息(名称,地址等)的内容。如果要获取随机的用户信息,他们难道不可以通过在请求有效载荷中使用随机数来对此端点进行API调用,而只是获取该用户信息吗?

如果您正在运行未经身份验证的API。是。

听起来您似乎希望通过模糊的方式获得安全性,而这种方式是非常不可靠的。

我读到一些解决此问题的方法是使用JWT,该方法基本上是对有效负载进行加密

并不是的。

您需要身份验证/授权。

您需要识别用户(可以通过用户名和密码,与Facebook或Twitter之类的提供程序进行OAuth识别)。

然后,您需要确保允许用户读取他们所请求的数据。例如,用户记录只能由拥有记录的用户或具有管理员角色的用户访问。

是否没有选择让此api调用仅在我的应用中可用的选项?

没有

还是至少使其对开发人员工具不可见?

没有