2025년 8월 1일 금요일(48일차)

Jeonghoon·2025년 8월 1일

jeonghoon's Study

목록 보기
50/128

🌐 REST · Annotation · HTTP 매개변수 완벽 정리


⚙️ [ REST ]

REST(Representational State Transfer)는 웹 자원을 관리하기 위한 아키텍처 스타일이며,
HTTP 프로토콜을 이용해 클라이언트와 서버 간의 일관된 통신을 구성한다.

항목설명
🧩 정의웹 자원을 관리하는 아키텍처 / 구조
🌍 특징HTTP 규약을 이용한 일관성 있는 통신 구성
🔗 주요 목적CRUD(Create, Read, Update, Delete) 기능을 표준화된 방식으로 제공

🚀 [ REST API ]

REST 아키텍처 기반으로 자원을 HTTP 요청으로 CRUD 할 수 있게 만든 API 규격

항목설명
📘 정의REST 구조를 따르는 API
⚙️ 역할REST 기반의 웹서비스 인터페이스 구축
💡 특징HTTP 요청을 통해 자원을 CRUD 할 수 있도록 설계

🧭 [ RESTful API ]

REST 아키텍처 원칙을 잘 지켜 구현된 API를 의미함

조건설명
🧱 일관성/member/XXXX, /board/XXXX 형태로 경로 통일
⚙️ HTTP MethodPOST(등록), GET(조회), PUT(수정), DELETE(삭제)
💬 무상태성 (Stateless)서버가 클라이언트 정보를 저장하지 않음
📦 응답 타입JSON, XML 등으로 반환

🧩 [ Annotation ]

Spring 프레임워크에서 동작과 기능을 정의하는 메타데이터 어노테이션

어노테이션설명
🧱 @SpringBootApplication스프링 기본 세팅 + 컴포넌트 스캔 + 내장 Tomcat 실행
🎯 @Controller클래스가 Controller임을 알리고, HTTP 통신 지원 (@Component 포함)
⚙️ @Component스프링이 스캔할 대상으로 지정, 자동 Bean 등록 (싱글톤 역할)
🌍 @RestController@Controller + @ResponseBody + @Component 포함
💬 @ResponseBody응답 시 Java 객체를 JSON으로 자동 변환

📥 [ 매개변수가 쿼리스트링일 경우 ]

HTTP 요청 시 쿼리스트링(Query String)을 통해 매개변수를 전달할 때 사용하는 어노테이션

🔹 @RequestParam

항목설명
🎯 역할단일 파라미터를 변수에 저장
⚙️ 생략 기준변수명이 URL 파라미터명과 일치하면 생략 가능
💾 주요 타입기본형 (int, String, List, Map 등)
🔗 처리 가능 요청쿼리스트링, <form> (첨부파일 제외)
📬 HTTP 메소드GET / POST / PUT / DELETE
🧾 추가 속성- name : URL 파라미터명 지정
- defaultValue : 값이 없을 때 기본값
- required : 매개변수 필수 여부 (true/false)

🔹 @ModelAttribute

항목설명
🎯 역할복수 파라미터를 객체(DTO)에 저장
⚙️ 생략 기준DTO 타입일 경우 기본 적용되어 생략 가능
💾 주요 타입DTO, VO 등 사용자 정의 객체
🔗 처리 가능 요청쿼리스트링, <form> (첨부파일 포함)
📬 HTTP 메소드GET / POST / PUT / DELETE

📦 [ 매개변수가 Body일 경우 ]

HTTP 본문(Body)에 포함된 데이터를 객체로 받는 어노테이션

🔹 @RequestBody

항목설명
🎯 역할HTTP 본문(Body)을 객체에 저장
💾 주요 타입DTO, List, Map 등
🔗 처리 가능 요청본문(Body)
📬 HTTP 메소드POST / PUT
🔒 보안매개변수가 URL에 노출되지 않아 보안에 유리
📡 지원 데이터 형식JSON 타입으로 객체 지원

🌐 [ HTTP 매개변수 ]

HTTP 요청 시 서버로 전달되는 매개변수의 구조 및 전달 방식

항목설명
🌍 전달 방식쿼리스트링을 통해 key=value 형식으로 전달
💡 예시http://localhost:8080/day03/param1?param1=value1&param2=value2
🧠 타입 제한HTTP 요청은 문자열만 전송 가능 (자동 타입 변환 지원)

✅ [ 핵심 요약 ]

구분내용
🌐 REST웹 자원 관리 아키텍처 (HTTP 기반 통신)
⚙️ REST APIREST 아키텍처를 따른 CRUD형 API
🧩 RESTful APIREST 원칙을 잘 지킨 API 구현 형태
🧱 주요 어노테이션@Controller, @RestController, @RequestParam, @RequestBody
💬 매개변수 구분쿼리스트링 → @RequestParam, Body → @RequestBody
🔒 보안Body 방식이 쿼리스트링보다 안전

0개의 댓글