[英]Spring + Angular: How to parse ResponseEntity in angular?
我正在使用 Spring Boot 創建一個需要在 Angular 4 中使用的 API。Spring 和 Angular 在不同的端口上。
問題是 Spring 的 ResponseEntity 在 Angular 中引發了一個錯誤。
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public ResponseEntity getFlow(@PathVariable int id) {
Flow flow = flowService.findById(id);
return new ResponseEntity(flow, HttpStatus.FOUND);
}
現在,我可以完美地使用 Postman 來測試 API 並且它可以工作。
奇怪的是,它會在請求的對象旁邊返回一個錯誤。
現在,問題的原因是 Spring Boot 應用程序返回的是 ResponseEntity 而不是普通對象(如 String),而 Angular 不知道如何解釋它。 如果控制器只返回一個 Flow 對象,它就可以工作。
如何使用 ResponseEntity 解決? 或者,我還能如何將對象與 HTTP 狀態代碼一起發送?
此外,在@RequestMapping 中放置生成 = "application/json",並在 angular 中獲取請求中,添加 http 選項:
const httpOptions = {
headers: new HttpHeaders({
'Accept': 'application/json',
'Content-Type': 'application/json'
})
};
所以你的 get 請求看起來像這樣:
this.http.get(url, httpOptions)
根據這里提到的文件
https://docs.angularjs.org/api/ng/service/ $http
200 到 299 之間的響應狀態代碼被認為是成功狀態,並將導致成功回調被調用。 該范圍之外的任何響應狀態代碼都被視為錯誤狀態,並將導致調用錯誤回調。 此外,小於 -1 的狀態代碼被歸一化為零。 -1 通常意味着請求被中止,例如使用 config.timeout。 請注意,如果響應是重定向,則 XMLHttpRequest 將透明地跟隨它,這意味着結果(成功或錯誤)將由最終響應狀態代碼確定。
當您發送一個 ResponseEntity(HttpStatus.Found) 實例時,其 Http 狀態代碼為 302,這不屬於成功范圍,這就是調用錯誤回調的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.