【问题标题】:Text Response from Spring REST API endpoint, how to retrieve that on Angular Front end来自 Spring REST API 端点的文本响应,如何在 Angular 前端检索它
【发布时间】:2021-07-26 11:35:12
【问题描述】:

Spring REST API 正在响应以下响应:

  • 成功执行时:返回文本类型的响应。
  • 执行不成功时:返回 JSON 错误对象。

前端服务类:

private detailsURL = 'http://localhost:8080/register';

constructor(private http:HttpClient){}

register(regisDetails): Observable<any>{
   return this.http.post(this.detailsURL,regisDetails);
}

前端组件类:

registerUser(){
   this.service.register(this.regisForm.value).subscribe(
     success => this.successMessage = success,
     error => this.errorMessage = error.error.errorMessage
   );
}

如果出现错误,我会收到我应该收到的错误消息。但在成功的情况下,我没有收到successMessage。

只是想知道是否有任何方法可以在前端获取 Text 类型的响应。否则我将不得不更改我的后端以发送 JSON 类型的响应以成功执行。

请帮助我理解这件事。

【问题讨论】:

标签: json angular typescript spring-rest


【解决方案1】:

您必须设置响应的状态。在控制器部分,您必须在 api 请求中提及 consumes="application/json"。

【讨论】:

  • 您的意思是说在 Spring REST API 中的 @PastMapping 上产生 = "application/json"。正确的?我尝试了它发送 JSON 类型数据的东西,但是如何在前端访问它?因为它没有键值对。它只有一些文本。比如“注册成功”
【解决方案2】:

您应该在后端进行更改,并为成功和后端提供 Json 格式的响应。这将是理想的解决方案。

提供与预期不同的响应确实是一个糟糕的设计。您可以检查请求“accept:application/json”中标头的值,并按照前端的预期提供响应

前端修复: 但是,在前端你总是可以使用 JSON.parse(success) 将文本转换为 Json 对象并根据需要进一步使用。

【讨论】:

  • 成功 => this.successMessage = JSON.parse(success)
  • 我试过这样做,但效果不佳
猜你喜欢
  • 1970-01-01
  • 2021-09-13
  • 1970-01-01
  • 2018-05-12
  • 2022-01-25
  • 2016-07-11
  • 1970-01-01
  • 2016-01-01
  • 1970-01-01
相关资源
最近更新 更多