0

我正在尝试从内存数据库角度创建虚拟登录,而不使用任何 json 文件或内存服务的实时 api 我正在使用用户对象

const users = [ 
      { id: 1, userName: 'abhijeet', password: 'abh@123'},
    ];

使用 http 响应

const url = `${environment.apiEndPoint}users?userName=^${user.userName}$&password=^${user.password}$`;
    this.http.get<UserDetails>(url).subscribe(resp => {
      let user = resp;

错误是

{body: {…}, url: "/api/users?userName=^abhijeet$&password=^abh@123$", headers: HttpHeaders, status: 404, statusText: "Not Found"}
body:
error: "Collection 'undefined' not found"
__proto__: Object
headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, lazyInit: ƒ}
status: 404
statusText: "Not Found"
url: "/api/users?userName=^abhijeet$&password=^abh@123$"

如果我从密码字段中删除 @ 并改用下划线,我会得到正确的响应,但 @ 不适用于任何归档。

4

1 回答 1

0

您不应该在 http 的 get 调用中使用这些@。它将期望以编码的形式。

此外,您的 api 调用似乎是登录,不要使用^进行登录查询,它适用于类似条件。但是对于登录,它应该与值完全匹配。

尝试以下,它会工作

const url = `${environment.apiEndPoint}users?userName=${user.userName}$&password=encodeURI(${user.password})$`;
    this.http.get<UserDetails>(url).subscribe(resp => {
      let user = resp;
于 2021-06-20T03:55:28.463 回答