[Spring Boot] GET API
Controller
- springboot에서 요청을 받는 부분
GET
- 리소스 취득
- CRUD 중 Read
- 멱등성, 안정성을 가진다.
- Path Variable, Query Parameter를 가진다.
예제
- GetApiController : 기본 주소 = http://localhost:9090/api/get
@RestController
@RequestMapping("/api/get/")
public class GetApiController { }
- @GetMapping : http://localhost:9090/api/get/hello
@GetMapping(path = "/hello")
public String hello() {
return "get Hello";
}
- @RequestMapping : method를 지정하지 않으면 get, post, put, delete 모두 동작
@RequestMapping(path = "/hi", method = RequestMethod.GET)
public String hi() {
return "hi";
}
- Path Variable : http://localhost:9090/api/get/path-variable/{name}
@GetMapping("/path-variable/{name}")
public String pathVariable(@PathVariable String name) {
System.out.println("PathVariable : "+name);
return name;
}
- Path Variable name 속성 : 주소 맵핑과 변수명을 다르게 작성 할 경우 @PathVariable에 name 속성 사용
@GetMapping("/path-variable2/{id}")
public String pathVariable2(@PathVariable(name = "id") String pathName) {
System.out.println("PathVariable : "+pathName);
return pathName;
}
-
Query Parameter :
- 기본 구조 : ?key=value&key2=value2...
- 방법1 : query param을 맵 형식으로 받을 경우 key의 값을 알 수 없다.@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(); }
- 방법2 : query param을 명식적으로 작성 할 수 있다. 그러나 개수가 많아지면 관리가 어렵다.
@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; }
- 방법3 : query param을 명시적으로 작성 할 수 있으며, 따로 dto 객체를 만들어 사용하기 때문에 관리에 용이하다. 가장 많이 사용하는 방식이다.
//현재 패키지 안에 'dto'라는 패키지 생성 후 'UserRequest' 파일을 만든다. //dto/UserRequest.java public class UserRequest { private String name; private String email; private int age; //getter, setter... @Override public String toString() { return "UserRequest{" + "name='" + name + '\'' + ", email='" + email + '\'' + ", age=" + age + '}'; } } //GetApiController.java @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(); }
DTO (Data Transfer Object)
- 계층 간의 데이터 교환을 위해 사용하는 객체이다.
- 따로 로직을 가지지 않고, getter/setter 메소드만 가진다.
@ReqeustParam
- query string 방식으로 url을 통해 parameter로 값을 받아온다.
- requried 값은 기본적으로 true 이므로 parameter가 반드시 url에 담겨있어야 한다. 없을 경우 400 에러를 반환한다.
Author And Source
이 문제에 관하여([Spring Boot] GET API), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@malgum/Spring-Boot-GET-API저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)