GET

Minseo Kang·2023년 2월 8일
1

Spring Boot

목록 보기
5/27
post-thumbnail

01. GET 메소드 개념


  • GET 메소드

    • 의미 : 리소스 취득

    • CRUD : R

    • 멱등성 : O

    • 안정성 : O

    • Path Variable : O

    • Query Parameter : O

    • Data Body : X




02. GET 메소드 작성


패키지 생성과 클래스 생성

  • controller 패키지 생성

  • controller 패키지 내에 ApiController 클래스 작성

    @RestController
    @RequestMapping("/api")
    public class ApiController {  }

메소드 작성

  1. 명확하게 주소 명시
  • @GetMapping(path="/주소")

    @GetMapping(path = "/api") 
    public String hello() { return "hello"; }

  1. 예전에 사용하던 방식
  • @RequestMapping("/주소")

  • 이 같은 방식을 사용하면 GET/POST/PUT/DELETE 모든 메소드가 맵핑 됨

@RequestMapping("/hello")
public String hi() { return "hi"; }
  • GET만 동작하도록 메소드를 지정해야 함
@RequestMapping(path = "/hi", method = RequestMethod.GET)
public String hi() { return "hi"; }

  1. 변화하는 구간 작성
  • Path Variable로 받으면 됨

  • @GetMapping("/주소/{변수이름}")

  • 매개변수에 @PathVariable 작성

  • 변수이름과 변수명은 동일해야 함

@GetMapping("/path-variable/{name}")
public String pathVariable(@PathVariable(name = "name") String pathName, String name) {
	System.out.println("PathVariable : " + pathName);
	return pathName;
}

  1. Query Parameter를 받는 첫 번째 방법
  • 매개변수로 Map 받기

  • @GetMapping(path = "/주소")

  • 매개변수에 @RequestParam 작성

  • key와 value 형태이므로 매개변수 Map

@GetMapping(path = "/query-param")
public String queryParam(@RequestParam Map<String, String> queryParam) {

	StringBuilder sb = new StringBuilder();

	queryParam.entrySet().forEach( entry -> {
		System.out.println(entry.getKey());
        System.out.println(entry.getValue());
        System.out.println("\n");

        sb.append(entry.getKey() + " = " + entry.getValue() + "\n");
        });

	return sb.toString();
}

  1. Query Parameter를 받는 두 번째 방법
  • 각 매개변수에 @RequestParam 지정

  • @GetMapping("/주소")

  • 매개변수에 @RequestParam 작성

  • 매개변수가 많아지면 Annotation을 일일이 붙이는 데에 부담

@GetMapping("/query-param02")
public String queryParam02(
	@RequestParam String name, 
    @RequestParam String email, 
    @RequestParam int age
    ) {
        System.out.println(name);
        System.out.println(email);
        System.out.println(age);
        return name + " " + email + " " + age;
}

  1. Query Parameter를 받는 세 번째 방법
  • dto 패키지 및 클래스 작성 및 사용

  • dto 내 작성한 클래스를 매개변수로 받기

  • @GetMapping("/주소")

  • 매개변수에 dto클래스 변수명

  • 현업에서 가장 많이 사용하는 방식

@GetMapping("/query-param03")
public String queryParam03(UserRequest userRequest) {
        System.out.println(userRequest.getName());
        System.out.println(userRequest.getEmail());
        System.out.println(userRequest.getAge());
        return userRequest.toString();
}



03. 정리


@RestControllerRest API 설정
@RequestMapping리소스를 설정(method로 구분 가능)
@GetMappingGet Resource 설정
@ReqeustParamURL Query Param Parsing
@PathVariableURL Path Variable Parsing
ObjectQuery Param Object로 Parsing



참고

  • 멱등성이란 여러 번 요청을 해도 같은 응답이 오는 것

  • DTO(= Data Transfer Object)란 데이터를 오브젝트로 변환하는 객체, 로직을 가지지 않는 데이터 객체

  • URL에서, "?" 이후가 Query Parameter

  • "&" 기준으로 잘라보면 "key=value" 형태

0개의 댓글