![](/img/trans.png)
[英]While trying to send POST request in HTTPCLIENT -JAVA, getting 400 Bad Request
[英]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.