별 개수: 50
속도: 2

JavaScript

웹 개발의 필수 언어

동적인 웹 페이지 구현을 위한 핵심 프로그래밍 언어.

Java

객체지향 프로그래밍

안정적이고 확장성 있는 백엔드 개발의 대표 언어.

HTML

웹의 기초

웹 페이지의 구조를 정의하는 마크업 언어.

React

현대적 UI 라이브러리

효율적인 사용자 인터페이스 구축을 위한 JavaScript 라이브러리.

CSS

웹 디자인의 핵심

웹 페이지의 시각적 표현을 담당하는 스타일 언어.

Spring

자바 웹 프레임워크

기업급 애플리케이션 개발을 위한 강력한 프레임워크.

JavaScript

웹 개발의 필수 언어

동적인 웹 페이지 구현을 위한 핵심 프로그래밍 언어.

Java

객체지향 프로그래밍

안정적이고 확장성 있는 백엔드 개발의 대표 언어.

HTML

웹의 기초

웹 페이지의 구조를 정의하는 마크업 언어.

React

현대적 UI 라이브러리

효율적인 사용자 인터페이스 구축을 위한 JavaScript 라이브러리.

CSS

웹 디자인의 핵심

웹 페이지의 시각적 표현을 담당하는 스타일 언어.

Spring

자바 웹 프레임워크

기업급 애플리케이션 개발을 위한 강력한 프레임워크.

JavaScript

웹 개발의 필수 언어

동적인 웹 페이지 구현을 위한 핵심 프로그래밍 언어.

Java

객체지향 프로그래밍

안정적이고 확장성 있는 백엔드 개발의 대표 언어.

HTML

웹의 기초

웹 페이지의 구조를 정의하는 마크업 언어.

React

현대적 UI 라이브러리

효율적인 사용자 인터페이스 구축을 위한 JavaScript 라이브러리.

CSS

웹 디자인의 핵심

웹 페이지의 시각적 표현을 담당하는 스타일 언어.

Spring

자바 웹 프레임워크

기업급 애플리케이션 개발을 위한 강력한 프레임워크.

Spring

스프링에서 받을 데이터는 '명시적'이어야 한다.

lamarcK 2025. 6. 13. 12:04

🎯 백엔드에서는 받을 정보에 대한 '명시'가 반드시 필요하다.

I. 핵심 원리

Spring은 "있는 것만" 받아준다.

java
클릭하여 코드 펼치기
// 이것만 받겠다고 명시
public class OrderItemRequestDto {
    private Long productId;    // ← 이것만 받음
    private int quantity;      // ← 이것만 받음
}
클릭하여 코드 복사
java
클릭하여 코드 펼치기
// 클라이언트가 더 많이 보내도...
{
  "productId": 1,      // ✅ 받음 (명시됨)
  "quantity": 2,       // ✅ 받음 (명시됨)  
  "color": "red",      // ❌ 무시됨 (명시 안됨)
  "discount": 1000     // ❌ 무시됨 (명시 안됨)
}
클릭하여 코드 복사

일종의 허가된 데이터의 형식이라고 볼 수도 있는데 명시적으로 받을 데이터를 정해두지 않을 경우 아예 해당 데이터 자체가 사라진다.

II. 왜 이런 방식일까?

1. 보안상 이유

java
클릭하여 코드 펼치기
// 악의적인 데이터가 와도 막아줌
{
  "productId": 1,
  "isAdmin": true,      // ← 이런 위험한 데이터도 무시됨
  "password": "hack"
}
클릭하여 코드 복사

2. 데이터 검증

java
클릭하여 코드 펼치기
public class OrderItemRequestDto {
    @NotNull
    private Long productId;   // ← 받을 데이터를 명시하고 검증 규칙도 추가

    @Min(1)
    private int quantity;
}
클릭하여 코드 복사

3. 명확한 계약

java
클릭하여 코드 펼치기
// "우리 API는 이런 데이터만 받습니다"라고 명시
// 프론트엔드도 이 구조를 보고 개발할 수 있음
클릭하여 코드 복사

III. 결론

백엔드는 "수문장" 역할을 한다.

  • 허가된 데이터(명시된 필드)만 통과
  • 허가되지 않은 데이터는 차단

명시 = 보안 + 안정성 + 명확성을 제공하는 중요한 장치! 🛡️✨

이동