🎯 백엔드에서는 받을 정보에 대한 '명시'가 반드시 필요하다.
I. 핵심 원리
Spring은 "있는 것만" 받아준다.
// 이것만 받겠다고 명시
public class OrderItemRequestDto {
private Long productId; // ← 이것만 받음
private int quantity; // ← 이것만 받음
}
클릭하여 코드 복사
// 클라이언트가 더 많이 보내도...
{
"productId": 1, // ✅ 받음 (명시됨)
"quantity": 2, // ✅ 받음 (명시됨)
"color": "red", // ❌ 무시됨 (명시 안됨)
"discount": 1000 // ❌ 무시됨 (명시 안됨)
}
클릭하여 코드 복사
일종의 허가된 데이터의 형식이라고 볼 수도 있는데 명시적으로 받을 데이터를 정해두지 않을 경우 아예 해당 데이터 자체가 사라진다.
II. 왜 이런 방식일까?
1. 보안상 이유
// 악의적인 데이터가 와도 막아줌
{
"productId": 1,
"isAdmin": true, // ← 이런 위험한 데이터도 무시됨
"password": "hack"
}
클릭하여 코드 복사
2. 데이터 검증
public class OrderItemRequestDto {
@NotNull
private Long productId; // ← 받을 데이터를 명시하고 검증 규칙도 추가
@Min(1)
private int quantity;
}
클릭하여 코드 복사
3. 명확한 계약
// "우리 API는 이런 데이터만 받습니다"라고 명시
// 프론트엔드도 이 구조를 보고 개발할 수 있음
클릭하여 코드 복사
III. 결론
백엔드는 "수문장" 역할을 한다.
- ✅ 허가된 데이터(명시된 필드)만 통과
- ❌ 허가되지 않은 데이터는 차단
명시 = 보안 + 안정성 + 명확성을 제공하는 중요한 장치! 🛡️✨
'Spring' 카테고리의 다른 글
스프링 부트 SQLite DB 연결 (0) | 2025.06.24 |
---|---|
Spring Boot 설정 시스템 application.properties, application-dev.yml (0) | 2025.06.24 |
스프링 빈의 종류 : 스코프 (1) | 2025.06.10 |
인스턴스 생명 주기와 애너테이션 : 한눈에 보기 - 콜백 (1) | 2025.06.09 |
스프링 프레임워크의 동작 방식 (2) | 2025.06.09 |