# 파라미터 전달 방식은 클라이언트가 서버로 데이터를 전달하는 방법을 의미
쿼리 스트링 방식 (Query String, Query Parameter)
- URL 끝에 '?' 를 붙이고, 파라미터를 'key-value' 형태로 전달하는 방식
- 여러개이 매개변수를 전달할 때는 '&' 로 구분
- 주로 GET 메소드를 사용하여 데이터를 전달할 때 사용
- 간단하고 직관적인 방식이지만, 데이터가 URL에 노출되므로 보안에 취약할 수 있음
- 스프링 부트에서는 '@RequestParam' 을 통해 컨트롤러 메서드의 매개변수로 받아올 수 있음
ex) 'http://example.com/search?keyword=springboot&page=1' 에서 'keyword'와 'page'는 쿼리 문자열의 파라미터
@RestController
public class SearchController {
@GetMapping("/search")
public String search(@RequestParam("keyword") String keyword, @RequestParam("page") int page) {
// keyword와 page를 사용하여 검색 로직을 수행
return "검색 결과: 키워드 - " + keyword + ", 페이지 - " + page;
}
}
경로 매개변수 방식 (Path Variable, Path Parameter)
- URL의 경로 부분에 파라미터가 포함
- 주로 RESTful API 에서 사용
- URL의 일부로 파라미터가 전달되므로, 리소스를 식별하고 검색하는데 사용
- 스프링 부트에서는 '@PathVariable' 을 사용하여 컨트롤러 메서드의 매개변수로 받아올 수 있음
ex) 'http://example.com/user/123' 에서 '123'은 사용자의 ID일 수 있음
@RestController
public class UserController {
@GetMapping("/user/{userId}")
public String getUser(@PathVariable("userId") Long userId) {
// userId를 사용하여 사용자 정보를 조회하는 로직을 수행
return "사용자 정보 조회: ID - " + userId;
}
}
HTTP 요청의 바디(Body)를 통한 전달
- 주로 POST, PUT, PATCH 등의 메서드를 통해 전달
- 복잡한 데이터를 전송할 때 주로 사용
- 데이터는 일반적으로 JSON 또는 XML 형식으로 전달
- 스프링 부트에서는 '@RequestBody' 를 사용하여 요청 본문을 객체로 변환하여 받아올 수 있음
@RestController
public class JsonDataController {
@PostMapping("/submitJsonData")
public String submitJsonData(@RequestBody JsonData jsonData) {
// 받아온 JSON 데이터를 처리하는 로직을 수행
return "받은 JSON 데이터: " + jsonData.toString();
}
}
폼(Form) 데이터를 통한 전달
- HTML 폼을 통해 전달되는 데이터
- 주로 'application/x-www-form-urlencoded' 또는 'multipart/form-data' 형식으로 전달
- 주로 웹 페이지에서 사용자 입력을 받을 때 사용
- 스프링 부트에서는 HTML 폼을 통해 전달된 데이터를 '@RequestParam' 을 사용하여 받아올 수 있음
<form action="/submitForm" method="post">
<label for="username">사용자 이름:</label><br>
<input type="text" id="username" name="username"><br>
<label for="email">이메일:</label><br>
<input type="email" id="email" name="email"><br><br>
<input type="submit" value="제출">
</form>
@RestController
public class FormController {
@PostMapping("/submitForm")
public String submitForm(@RequestParam("username") String username, @RequestParam("email") String email) {
// 폼 데이터를 사용하여 새로운 사용자를 생성하거나 다른 작업을 수행
return "폼 제출 결과: 사용자 이름 - " + username + ", 이메일 - " + email;
}
}
'프레임워크(Framework) > Spring Boot' 카테고리의 다른 글
[Spring Boot] Validation (유효성 검사) (49) | 2024.04.15 |
---|---|
[Spring Boot] ResponseEntity (49) | 2024.04.15 |
[Spring Boot] 개요 (24) | 2024.04.05 |
[Spring Boot] 스프링 부트 로드맵 (28) | 2024.02.13 |
[Spring Boot] 관점 지향 프로그래밍 (AOP) (27) | 2024.02.02 |