{
"latitude": 36.0,
"longitude": 128.0,
"radius": 99999.0,
}
이 RequestBody의 이상한 점을 찾아보세요...

이런 거 띄우는 json이야.
"radius": 99999.0, 저 오른쪽 끝의 쉼표 보입니까?
저거 지우니까 해결 됨
고작 저거 하나때문에...
JSON 포맷에서 마지막 요소 뒤에 쉼표가 있을 경우, 이는 유효하지 않은 JSON으로 간주되기 때문에 400 에러 (Bad Request)가 발생할 수 있다고 합니다...
builder 썼는데
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class FindByGeoRequestDTO {
블라블라 ...
@Builder.Default
private List<String> categories = new ArrayList<>(Arrays.asList("어쩌구1", "22222", "33333"));
}
이렇게 줬더니 디폴트 값이 적용이 안 됐다.
알아보니 @NoArgsConstructor 이 친구와 @Builder.Default의 궁합이 안 좋다고 한다.
@NoArgsConstructor는 기본 생성자를 생성하는데, 이 생성자는 필드 초기화 코드를 실행하지 않아서, 직렬화 도구가 이 생성자를 사용해 객체를 생성하면, 기본 값을 쓰고 싶은 저 필드들이 기본값으로 초기화되지 않는다.
근데 @NoArgsConstructor 주석 쳐도 기본값 왜 안먹지!!!!!!
직접 구현한 기본 생성자에서 기본값으로 초기화하면, @RequestBody를 통해 객체가 생성될 때 항상 이 생성자를 호출하게 되어 필드가 기본값으로 초기화된다.
builder 써보고 싶었는데 굴복했다.