java.lang.IllegalArgumentException: Request header is too large
@GetMapping("/by-ids")
List<User> getUsers(@RequestParam(name = "ids") String[] ids) {
return List.of();
}
์์ ๊ฐ์ GET API๋ ids ํ๋ผ๋ฏธํฐ์ ๋ํ ๊ธธ์ด ์ ํ์ ๋์ง ์์์ผ๋ฏ๋ก Request header is too large ์ ๋ํ ์ทจ์ฝ์ ์ด ๋ด์ฌ๋์ด์๋ ์ํ๋ก ๋ณผ ์ ์๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด์ ๋ํ ๋ฌธ์ ๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์ข์๊น?
์ฒซ๋ฒ์งธ, ์๋ฒ์์ ์ฒ๋ฆฌํ๋ ํค๋ ํฌ๊ธฐ ์ฌ์ด์ฆ๋ฅผ ๋๋ฆฌ์ โ
๊ธฐ๋ณธ์ ์ธ ํด๊ฒฐ๋ฐฉ๋ฒ์ ์๊ฐ๋ณด๋ค ์๊ฒ ์ค์ ๋์ด์๋ ํค๋ ํฌ๊ธฐ๋ฅผ ์ด๋์ ๋ ๋๋ฆฌ๋ ๊ฒ์ด๋ค. ๋ค๋ง, ์ฌ์ ํ ์์ํ ์ ์๋ ํค๋ ํฌ๊ธฐ๋ฅผ ์ปค๋ฒํ ์ ์์ผ๋ฉฐ ์ด์ ๋ํ ๋์์ผ๋ก๋ GET ์์ฒญ์ด ์๋ POST ์์ฒญ์ ํ์ฉํด์ผํ๋ค. ์์ฒญ ํค๋ ํฌ๊ธฐ์ ๋ํ ์ ํ์ ๋๋ฆฌ๋ ๋ฐฉ์์ ์์ ์กฐ์น์์ ์์ง ๋ง์.
server.max-http-request-header-size: 10MB
๋๋ฒ์งธ, URL ์ธ์ฝ๋ฉ ๋ฐฉ์์ ํผ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ์ โ
GET ์์ฒญ ์ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๊ฐ ๋๋ฌด ๊ธธ์ด์ง ์ ์๋ค๋ฉด ํผ ๋ฐ์ดํฐ ํ์์ผ๋ก ๋ณด๋ผ ์ ์๋๋ก POST ์์ฒญ์ ๋ํด์๋ ์ง์ํ๋ฉด ๋๋ค.
@GetMapping(path = "/by-ids")
List<User> getUsers(@RequestParam(name = "ids") String[] ids) {
return List.of();
}
@PostMapping(path = "/by-ids", consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE})
List<User> getUsersUsingFormData(@RequestParam(name = "ids") String[] ids) {
return getUsers(ids);
}