簡體   English   中英

Spring + Angular:如何以角度解析 ResponseEntity?

[英]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 並且它可以工作。 在此處輸入圖片說明

但是當我從 Angular 發出請求時,它返回一個錯誤: 在此處輸入圖片說明

在此處輸入圖片說明

奇怪的是,它會在請求的對象旁邊返回一個錯誤。

現在,問題的原因是 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM