【问题标题】:Angular post request not showing any response data角度发布请求未显示任何响应数据
【发布时间】:2019-11-10 02:10:18
【问题描述】:

当我使用邮递员发送 post 请求时,我得到了状态为 400 的预期响应 但是当我使用 angular http.post 通过浏览器发送请求时,我只收到 400 错误而没有响应数据

这是我用 angular 发送的请求

signUp(data: {}) {
return this.http.post(this.baseUrl + '/blog/api/user/', data).pipe(
  map(resp => resp),
  catchError(err => {
    throw err;
  })
)}

我在这里控制台记录我的回复

    onSubmit() {
    if (!this.signupForm.valid) {
      return;
    }
    this.authService.signUp(this.signupForm.value)
    .subscribe(
      resp => console.log(resp),
      err => console.log(err)
    );
  }

【问题讨论】:

  • 错误请求可能意味着您发送的数据不是后端预期的数据(可能是错误的属性名称或不同的对象结构)。你能打印你的data 看看它是否是后端所期望的吗?也可以尝试:this.http.post(this.baseUrl + '/blog/api/user/', data, {observe: 'response'}) 以获得完整的 POST 响应
  • 我添加了 {observe: 'response'} 但它给了我相同的响应
  • 实际上我自己使用 django-rest-framework 编写后端
  • 后端对您的请求有何期望?与此相比,您发送的数据实际上是什么样的?
  • 后端期望这样的数据{用户名:somename,电子邮件:some@email,密码:somepassword},我也提供这样的数据,后端检查用户名是否已经存在,它会给出这样的错误@ 987654329@ 状态为 400

标签: javascript node.js angular typescript django-rest-framework


【解决方案1】:

尝试像这样删除服务中的管道,看看它是否有效

signUp(data: {}) {
  return this.http.post(this.baseUrl + '/blog/api/user/', data).pipe(
    map(resp => resp),
    catchError(err => {
      throw err;
    })
)}

改成这个

signUp(data: {}) {
  return this.http.post(this.baseUrl + '/blog/api/user/', data);
}

通常我们在组件中使用操作符来修改来自API的数据

在你的组件中这样做

this.authService.signUp(this.signupForm.value)
   .pipe(
        map(resp => resp),
        catchError(err => {
          throw err;
        })
    )
    .subscribe(
      resp => console.log(resp),
      err => console.log(err)
    );

【讨论】:

  • 我也试过这样没有操作员但没有得到响应
  • 您是如何从 API 返回响应的?还要再次检查我的答案
猜你喜欢
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-03
相关资源
最近更新 更多