스프링 요청 매개변수

요청 매개변수: 서버에서 보낸 값

상황에 따라 쿼리 매개 변수, 경로 변수 및 HTTP 본문 데이터를 사용하여 서버에 데이터를 전달할 수 있습니다.

방법 역할 사용 예
얻다 서버에서 자원을 검색하는 데 사용되는 메소드입니다.

사용자가 웹 페이지를 요청할 때,
브라우저가 이미지 파일을 요청할 때
우편 서버에서 데이터를 보내는 데 사용되는 방법 이용자가 회원가입신청서를 제출하면,
사용자가 게시물을 작성하고 제출할 때
놓다 서버에 데이터를 업데이트하는 데 사용되는 방법입니다.

사용자가 프로필 정보를 수정하는 경우
삭제 서버에서 데이터를 삭제하는 데 사용되는 방법 이용자가 작성한 게시물이 삭제된 경우
반점 서버가 데이터의 일부만 수정할 때 사용하는 방법. 사용자가 게시물의 일부 내용을 수정하는 경우

예를 들어 아래와 같이 @GetMapping 데이터 전송 애노테이션을 사용하고 그에 따라 @RequestParam 애노테이션을 연결하여 쿼리 파라미터 값을 추출할 수 있다.

@GetMapping("/example")
public String example(@RequestParam("param1") String param1, @RequestParam("param2") int param2) {
    // ...
}

위의 코드에서 @RequestParam 주석은 param1 및 param2라는 쿼리 매개 변수 값을 추출합니다.

추출된 값은 각각 String 및 int 유형으로 paran1 및 param2 매개변수에 바인딩됩니다.

1. 쿼리 문자열 – 쿼리 매개변수

뷰에 입력된 값과 선택한 값 또는 파라미터에서 미리 뷰에 입력된 값입니다.

클라이언트 측에서 액세스할 때 매개변수는 ? URL 끝에.

예를 들어, http://example.com/test?param1=value1@param2=value2로 전송됩니다

개발자는 컨트롤러 클래스 메서드에서 @RequestParam 주석을 사용하여 해당 매개변수를 가져올 수 있습니다.

쇼핑몰에서 상품 목록을 조회하는 페이지에서 상품을 카테고리별로 필터링하기 위해 카테고리 ID 등을 쿼리 파라미터로 전달할 수 있다.

또한 광고 링크에서는 사용자가 광고를 클릭하면 광고의 ID 등을 쿼리 파라미터로 전송하여 광고의 성과를 분석한다.

@RequestParam 쿼리 매개변수 또는 HTTP 요청 본문 데이터 매핑을 위한 주석입니다.


이름이 매개변수에 해당하는 매개변수를 찾아 매핑합니다.

예) @RequestParam(“param1”) 문자열 param1

@GetMapping("/example")
public String example(@RequestParam("param1") String param1, @RequestParam("param2") String param2) {
    // param1과 param2 값을 사용하여 로직을 수행
    return "example";
}

예를 들어 URL http://localhost:8080.example?param1=value1¶m2=value2로 GET 요청을 보내면 “value1” 값이 param1 변수로 전달되고 “value2” 값이 변수로 전달됩니다.

param2 변수.

@GetMapping 어노테이션은 GET 메소드에서 요청을 받았을 때 실행되도록 매핑한 어노테이션이고, @RequestParam 어노테이션은 요청 파라미터로 받은 값을 해당 메소드의 파라미터에 매핑한 어노테이션이다.

위의 코드에서 param1과 param2의 값은 String 타입의 param1과 param2 파라미터에 각각 매핑되어 있습니다.

GET 메소드에서 /example로 URL 요청을 하면 @RequestParam 어노테이션과 함께 param1, param2를 수신하고 해당 값을 이용해 로직을 실행하며 “example” 문자열을 반환한다.

@GetMapping("/example")
public String example(@RequestParam(value = "param1", defaultValue = "default1") String param1, 
                      @RequestParam(value = "param2", defaultValue = "default2") String param2) {
    // param1과 param2 값을 사용하여 로직을 수행
    return "example";
}

defaultValue 속성을 부여하여 쿼리 파라미터 값이 전달되지 않을 때 처리할 기본값을 설정할 수 있습니다.

2. 경로 변수

클라이언트 측에서는 URL의 일부가 변수로 변환되어 전송됩니다.

예를 들어 http://example.com/test/{param1}/detail/param2로 전송됩니다

개발자 측에서는 @PathVariable 주석을 컨트롤러 클래스의 메서드 매개변수에 연결하여 변수 값을 가져올 수 있습니다.

쇼핑몰에서 상품 상세 페이지를 조회할 때 상품 ID를 경로 변수로 전달할 수 있습니다.

이 경우 제품 ID가 URL에 직접 포함되기 때문에 보안이 강화되고 검색 엔진 최적화(SEO)도 좋은 효과를 볼 수 있습니다.

@경로변수 경로 변수 매핑을 위한 주석입니다.

매개변수에 해당하는 이름을 가진 변수를 찾아 매핑합니다.


예) @PathVariable(“param1”) String param1

URL 경로 http://example.com/users/123 에서 id 값을 추출해야 하는 경우

@GetMapping("/users/{id}")
public String getUser(@PathVariable Long id) {
    // id 값으로 사용자 정보를 조회하는 로직
    return "user";
}

매개 변수 옆에 첨부하여 PathVariable 주석을 사용합니다.

@GetMapping 어노테이션은 URL이 GET 요청일 때 실행될 이 메서드를 매핑하는 역할을 하며, {id} 부분은 PathVariable 어노테이션을 통해 id 값을 추출한다.

따라서 PathVariable 어노테이션은 여러 데이터 전송 관련 어노테이션과 함께 사용해야 하며 그 역할은 URL 경로에서 값을 추출하는 것이다.

3. HTTP 요청 – 본문 데이터

HTTP POST, PUT 및 DELETE와 같은 요청에서 전송되는 데이터입니다.

클라이언트 측은 HTTP 요청의 본문 데이터를 전송합니다.

주로 JSON, XML, HTML, Form 등의 형태로 전송된다.

코드에서 컨트롤러 클래스 메서드의 @PostMapper, @입니다.

쇼핑몰 회원가입 페이지에서는 사용자가 입력한 정보를 HTTP 본문 데이터로 전송하여 회원정보를 저장합니다.

HTTP 요청의 본문 데이터 보내기

@요청 본문 HTTP 요청 본문 데이터 매핑을 위한 주석입니다.


HTTP 요청의 Content-Type에 따라 적절한 변환을 수행한 후 매개변수에 매핑합니다.


ex) @RequestBody 사용자 사용자

HTTP 요청 본문 데이터는 주로 POST, PUT, DELETE와 같은 HTTP 요청에서 전송되는 데이터입니다.

@PostMapping("/product")
public ResponseEntity<Product> createProduct(@RequestBody ProductRequestDto productRequestDto) {
    Product product = productService.createProduct(productRequestDto);
    return ResponseEntity.ok(product);
}

이 코드는 HTTP POST 요청을 처리하기 위한 것입니다.

클라이언트가 /product URL 경로로 POST 요청을 보내면 서버는 ‘createProduct’ 메소드를 실행합니다.

@RequestBody는 HTTP 요청 본문에 포함된 데이터를 읽는 주석이고 ProductRequestDto 클래스는 클라이언트가 보낸 데이터를 수신하는 데 사용되는 클래스입니다.

메서드가 실행되면 클라이언트에서 보낸 요청 본문 데이터가 ProductRequestDto 객체로 변환되어 매개 변수로 전달됩니다.

ProductService 클래스의 createProduct 메소드는 ProductRequestDto 객체를 사용하여 새로운 Product 객체를 생성하고 반환합니다.

마지막으로 반환 값으로 HTTP 상태 코드 200과 함께 제품 개체를 ResponseEntity의 ok()로 보냅니다.

@PostMapping("/example")
public String example(@Valid @RequestBody RequestData data) {
    // RequestData 클래스에 저장된 데이터를 사용하여 로직을 수행
    return "example";
}

RequestData 데이터 파라미터 옆에 @Valid와 @RequestBody를 함께 첨부하면 요청 본문 데이터의 유효성을 확인할 수 있다.

4. 요청 파라미터를 얻는 방법

뷰에 입력된 값, 선택된 값 또는 숨겨진 매개변수로 전송된 값은 다음과 같은 방법으로 얻을 수 있습니다.

@RequestParam 사용 @RequestParam 주석
다음을 사용하여 매개변수를 하나씩 가져올 수 있습니다.

양식 클래스 사용
(폼 클래스는 별도로 생성해야 함)
Spring MVC Form 클래스 내의 필드 값을 저장합니다.

이 메서드는 요청 매개 변수를 수집하고 단일 개체로 수락하기 때문에 자주 사용됩니다.

수신 시 ‘타입 변환’ 또는 ‘포맷 지정 가능’.

하나의 뷰에 여러 개의 버튼이 있을 때 요청을 보내기 위해 어떤 버튼을 클릭했는지 식별해야 하는 경우 요청 매핑 주석의 Params 속성입니다.

링크와 같이 URL의 일부로 포함된 값을 가져올 때 요청 매핑 주석의 value 속성에 값이 저장되는 경로를 지정하고 @PathVariable 주석과 인수를 지정하여 값을 저장합니다.

요청 처리기 메서드의