簡體   English   中英

當 Angular HttpClient 將 Set<> 發布到 SpringBoot 端點時收到 400 錯誤請求

[英]Getting a 400 Bad Request when Angular HttpClient posts a Set<> to a SpringBoot endpoint

我以這種方式公開一個接受 Set<> 作為@RequestBody 的端點:

public @ResponseBody ResponseEntity<Response> addTeamOwner(@RequestParam("teamName") String teamName, @RequestBody Set<String> emails, HttpServletRequest request){...}

我的 Angular 前端這樣調用這個端點:

let params = new HttpParams().set('teamName', teamName);
let url = `${UrlManager.TEAMS}/addOwners?${params.toString()}`;
this.httpClient.post<any>(url, emails);

出於某種原因,我收到 400 Bad Request: HttpErrorResponse {headers: HttpHeaders, status: 400, statusText: 'Bad Request', url: 'http://localhost:4200/api/teams/addOwners?teamName=DEMO_TEAM', ok: false, …}

后端似乎不接受 Angular 發送的Set ,因為當我更改為 Array 時,一切正常!

僅供參考,我的 API 是 SpringBoot,我的前端是 Angular。

實際上不可能序列化在Set中發送的數據,因為數據不是作為屬性存儲的。

解決方案是以這種方式將集合轉換為數組:

this.httpClient.post<any>(url, [...emails]);

並且后端能夠正確地將其反序列化為Set

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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