400에러는 클라이언트 요청이 문제가 있다는 뜻이다.

수정버튼을 눌렀더니 수정실패가 뜬다.
클라이언트 요청 문제가 있으므로 [수정] 버튼 누를때 어떻게 요청을 보내는지 check하자.

수정이 불가능하게 만든 indexClassification과 indexName이 함께 들어오는걸 알 수 있다.
- 수정 요청시 이 두개가 안들어오게 만들기가 정답니다.
나는 백엔드를 하고 있으므로
package org.codeiteam3.findex.indexinfo.dto.request;
import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.Digits;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDate;
public record IndexInfoUpdateRequest(
String indexClassification,
String indexName,
Integer employedItemsCount,
LocalDate basePointInTime,
@DecimalMin(value = "0.0", inclusive = false, message = "기준 지수는 0보다 커야 합니다.")
@Digits(integer = 16, fraction = 2, message = "기준 지수 형식이 올바르지 않습니다.")
BigDecimal baseIndex,
Boolean favorite
) {
}
IndexInfoUpdateRequest에 indexClassification과 indexName 필드를 같이 받도록 수정하였다.

이렇게 하면 수정이 정상
방법2
- yml 파일에서 spring.jackson.deserialization.fail-on-unknown-properties: false로 하면된다.
- 이 설정은 JSON -> 객체변환할때 DTO에 없는 필드가 들어오면 어떻게 처리할지 정하는 Jckson 설정.
jackson:
deserialization:
fail-on-unknown-properties: true
public record IndexInfoUpdateRequest(
Integer employedItemsCount,
LocalDate basePointInTime,
@DecimalMin(value = "0.0", inclusive = false, message = "기준 지수는 0보다 커야 합니다.")
@Digits(integer = 16, fraction = 2, message = "기준 지수 형식이 올바르지 않습니다.")
BigDecimal baseIndex,
Boolean favorite
) {
}
수정 요청 DTO는 이렇게 돼있고 요청은 위와같이
indexClassification과 indexName이 추가로 들어오고있다.
이러한 추가로들어오는 값에대하여 DTO에 없는 필드면 그냥 무시한다.
따라서 위 설정만 해주면 DTO에 따로 필드추가 안해도 된다.
true 설정으로도 많이 쓴다.(B2B API, 금융 API)
이유는 클라이언트가 잘못된 필드를 보내는걸 바로 발견할 수 있고
API 스펙을 엄격하게 유지하기위해서이다.
{
"nmae": "insu"
}
이런 오타방지도 가능하다.
'코드잇 스프린트 > 실습' 카테고리의 다른 글
| MoNew 프로젝트: ERD 설계 데이터 타입에 대한 고민(VARCHAR vs TEXT) (0) | 2026.04.15 |
|---|---|
| FINDEX 프로젝트: Railway로 프로젝트 배포하기 (0) | 2026.03.17 |
| Findex 프로젝트: 지수정보 목록 조회 Cursor기반 페이지네이션 적용 (0) | 2026.03.16 |
| 디스코드 프로젝트 실습: JPA N+1 문제 해결하기 (0) | 2026.03.11 |
| 디스코드 프로젝트 실습: JPA Public 채널생성시 ReadStatus에 채널id가 null값으로 들어간다. (0) | 2026.03.10 |