GET, POST 메서드
2025. 9. 22. 15:14ㆍ개발/스프링
반응형
1. GET과 POST 기본 개념
✅ GET
- 목적: 서버에서 데이터를 조회(Read) 할 때 사용.
- 특징
- URL에 쿼리스트링(Query String) (?key=value)으로 데이터 전달.
- 요청 데이터가 주소창에 노출됨.
- 브라우저 캐싱·북마크 가능.
- 길이 제한 있음(브라우저·서버마다 다르지만 보통 2,000자 이내).
- 서버 상태를 바꾸지 않는 요청에 사용 (idempotent: 같은 요청을 여러 번 해도 결과 같음).
✅ POST
- 목적: 서버에 데이터를 등록(Create)하거나 수정(Update) 할 때 사용.
- 특징
- 데이터가 HTTP Body에 담겨 전달됨.
- URL에 보이지 않음 → 보안상 더 안전.
- 데이터 크기 제한 거의 없음.
- 서버 상태를 바꾸는 요청에 사용 (ex. 회원가입, 글쓰기).
- 같은 요청을 여러 번 보내면 결과가 달라질 수 있음.
2. Spring MVC에서의 GET/POST
스프링에서는 컨트롤러 메서드에 어노테이션으로 HTTP 메서드(GET/POST 등)를 명시합니다.
GET 매핑 예시
@Controller
public class MemberController {
// 회원 등록 폼 조회 (화면 열기)
@GetMapping("/members/new")
public String createForm() {
return "members/createMemberForm"; // HTML 템플릿 반환
}
// 회원 목록 조회
@GetMapping("/members")
public String list(Model model) {
List<Member> members = memberService.findMembers();
model.addAttribute("members", members);
return "members/memberList";
}
}
- 주로 화면 보여주기, 조회 요청에 사용.
POST 매핑 예시
@Controller
public class MemberController {
// 회원 등록 처리 (폼 전송)
@PostMapping("/members/new")
public String create(MemberForm form) {
Member member = new Member();
member.setName(form.getName());
memberService.join(member); // DB 저장
return "redirect:/"; // 저장 후 홈으로 이동
}
}
- 폼 데이터 전송을 받아 DB에 저장/갱신할 때 사용.
- @PostMapping은 Body에 담긴 form 데이터(application/x-www-form-urlencoded)를 MemberForm 객체로 자동 매핑해줌.
3. Spring에서 GET/POST와의 관련성 정리
어노테이션 | @GetMapping, @RequestMapping(method=GET) | @PostMapping, @RequestMapping(method=POST) |
주 용도 | 조회, 화면 이동, 데이터 검색 | 데이터 등록, 수정, 삭제 |
데이터 위치 | URL (쿼리스트링) | HTTP Body |
스프링 특징 | 파라미터를 @RequestParam 또는 DTO 객체로 바인딩 가능 | 폼/JSON 데이터를 DTO로 바인딩 가능 |
예시 | 회원 목록 보기, 검색하기 | 회원가입, 글쓰기 |
4. 정리
- GET: 서버 상태에 영향을 주지 않고 단순히 조회 → 화면 이동, 리스트 보기, 검색 등에 적합.
- POST: 서버 상태 변경(등록/수정/삭제) → 회원가입, 글쓰기, 결제 처리 등에 적합.
- Spring MVC에서는 @GetMapping / @PostMapping으로 명확하게 구분해 작성하며, 이 방식으로 RESTful API를 구성할 수도 있음.
반응형
'개발 > 스프링' 카테고리의 다른 글
회원 관리 예제 - 웹 MVC 개발 (0) | 2025.09.22 |
---|---|
스프링 빈과 의존관계 (0) | 2025.09.20 |
회원 관리 예제 - 백엔드 개발 (0) | 2025.09.19 |
스프링 웹 개발 기초 (1) | 2025.09.18 |
spring 환경설정 (1) | 2025.09.08 |