Home Spring Boot GET Example
Post
Cancel

Spring Boot GET Example

1. GetMapping사용하기

1
2
3
4
@GetMapping(path = "/hello")
public String hello(){
    return "Hello";
}

2. RequestMapping사용하기

1
2
3
4
@RequestMapping(path = "/hi", method = RequestMethod.GET)
public String hi(){
    return "hi";
}
  • RequestMapping을 사용할 때 Method를 지정하지 않으면 GET, POST, PUT, DELETE 등 모든 Method가 동작된다. GET만 지정하고 싶을 때 method parameter를 지정해주면 된다.

3.path Variable

1
2
3
4
5
@GetMapping("/path-variable/{name}") // http://localhost/api/get/path-variable/{name}
public String pathVariable(@PathVariable String name){
    System.out.println("pathVariable : " + name);
    return name;
}
  • GetMapping에서 적은 {}내부의 변수명과 함수의 parameter의 변수명이 같아야한다. (name)
  • 만약 GetMapping에서 사용한 변수가 다른 식으로 사용할 필요가 있는경우 아래의 코드처럼 변수를 mapping해서 사용할 수 있다.
1
2
3
4
5
@GetMapping("/path-variable/{name}") // http://localhost/api/get/path-variable/{name}
public String pathVariable(@PathVariable(name = "name") String pathName){
    System.out.println("pathVariable : " + pathName);
    return pathName;
}

4.Query Param

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// http://localhost:8080/api/query-param?user=김민수&email=kmslkh@naver.com&age=28
@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();
}

GET1

  • 위와같이 Map을 사용해 받으면 어떤 Key가 들어있는지 확인할 수 없다.
  • 아래의 코드처럼 명시적으로 지정하여 Query param을 받을 수 있다.

4-1 Query param2

1
2
3
4
5
6
7
8
@GetMapping("query-param02")
public String queryParam02(
    @RequestParam String name,
    @RequestParam String email,
    @RequestParam int age
){
    return name + " " + email + " " + age;
}

GET2

  • 지정된 Type으로 요청하지 않으면 Bad Request Error가 발생한다. (ex int로 지정된 age에 문자열을 넣었을 때)
  • 하지만 이런식으로 요청을 처리하면 Key,Value쌍이 늘어날 때마다 새로운 parameter를 추가해야한다.

    → 이런 문제를 해결하기 위해 Spring에서는 DTO형태로 mapping할 수 있게 해준다.

4-2 Query param3

  • dto pacakge 생성, UserRequest Class 생성
1
2
3
4
5
6
7
8
9
10
11
package com.example.hello.dto;

@Getter
@Setter
@ToString
public class UserRequest {

    private String name;
    private String email;
    private int age;
}
  • API
1
2
3
4
@GetMapping("query-param03")
public String queryParam03(UserRequest userRequest){
    return userRequest.toString();
}
  • @RequestParam annotation을 작성할 필요없다. Query Param으로 들어온 key와 UserReuqest라는 Class의 변수들을 Spring이 매핑한다.
  • Query Parameter로 들어오는 종류가 늘어날 경우 Class만 변경해주면 된다.
This post is licensed under CC BY 4.0 by the author.