본문 바로가기
Spring Framework

Controller / Get API - @RestController, @RequestMapping, @GetMapping 등

by 진청우 2023. 1. 18.

컨트롤러

모델과 뷰 사이에서 브릿지 역할

앱 사용자로부터 입력에 대한 응답으로 모델 및 뷰를 업데이트 하는 로직을 포함.

사용자의 요청은 모두 컨트롤러를 통해 진행되어야 함.

컨트롤러로 들어온 요청은 모델이 어떻게 처리할지 결정하여 모델로 요청을 전달함.

 

 

@RestController

@Controller @ResponseBody가 결합된 어노테이션.

컨트롤러 클래스 하위 메소드에 @ResponseBody 어노테이션을 붙이지 않아도 문자열과 JSON 등을 전송할 수 있음.

View를 거치지 않고 HTTP ResponseBody에 직접 Return 값을 담아 보내게 됨.

 

 

[출처] 어르운드 허브 스튜디오

 

@RequestMapping

MVC의 핸들러 매핑을 위해서 DefaultAnnotationHandlerMapping을 사용.

DefaultAnnotationHandlerMapping 매핑정보로 @RequestMapping 어노테이션을 활용.

클래스와 메소드의 RequestMapping을 통해 URL을 매핑하여 경로를 설정하여 해당 메소드에서 처리.

 

value : url 설정

method : GET, POST, DELETE, PUT, PATCH 등

 

메소드 지정하는 방법 대신 아래 방식의 어노테이션을 사용할 수도 있음.

@GetMapping

@PostMapping

@DeleteMapping

@PutMapping

@PatchMapping

 

 

 

 

GET API

 

@PathVariable

GET 형식의 요청에서 파라미터를 전달하기 위해 URL에 값을 담아 요청하는 방법.

 

@GetMapping에서 사용된 {변수}의 이름과 메소드의 매개변수를 일치시켜야 함.

@GetMapping(value="/variable1/{variable}")
public String getVariable1(@PathVariable String variable) {
	return variable;
}

 

@GetMapping에서 사용된 {변수}의 이름과 메소드의 매개변수가 다를 경우

// http://localhost:8080/api/v1/get-api/variable1/{String 값}
@GetMapping(value="/variable2/{variable}")
public String getVariable2(@PathVariable("variable") String var) {
	return var;
}

 

 

@RequestParam

GET 형식의 요청에서 쿼리 문자열을 전달하기 위해 사용되는 방법.

'?'를 기준으로 우측에 {키}={값}의 형태로 전달되며, 복수 형태로 전달할 경우 '&'를 사용함.

@GetMapping(value="/request1")
public String getRequestParam1(
    @RequestParam String name,
    @RequestParam String email,
    @RequestParam String organization) {
	return name+" "+email+" "+organization;
}

 

어떤 요청 값이 들어올지 모를 경우 사용하는 방식

@GetMapping(value="/request2")
public String getRequestParam2(@RequestParam Map<String, String> param) {
    StringBuilder sb = new StringBuilder();
    param.entrySet().forEach(map-> {
    sb.append(map.getKey() + " : " + map.getValue() + "\n";
    });
    return sb.toString();
}

 

 

DTO

GET 형식의 요청에서 쿼리 문자열을 전달하기 위해 사용되는 방법

key와 value가 정해져있지만 받아야 할 파라미터가 많을 경우 DTO 객체를 사용,

@GetMapping(value="/request3")
public String getRequestParam3(MemberDTO memberDTO) {
    return memberDTO.toString();
	//return memberDTO.getName()+" "+memberDTO.getEmail()+" "+memberDTO..getOrganization();
}

public class MemberDTO {
    private String name;
    private String email;
    private String organization;
    ...
}

 

IntelliJ 에서 [alt]+[insert] 를 누른 후 Getter and Setter 선택하면 자동 등록 가능함.

(이걸 여태 안썼다니 모르면 손과 눈이 고생ㅎ;;ㅎ)

 

 

 

크롬 확장 프로그램

Talend API Tester - Free Edition

이거 있으면 postman 필요 없었네.

이런 거 하고 있으니까 바로바로 보이고 좀 재밌다. 쌉초보의 소소한 즐거움ㅎㅎ;;;

'Spring Framework' 카테고리의 다른 글

Controller / Put API, Delete API - @putMapping @deleteMapping  (0) 2023.01.18
Controller / Post API - @postMapping  (0) 2023.01.18
pom.xml  (0) 2023.01.18
REST API  (0) 2023.01.17
GoF(Gang of Four) 대자인 패턴  (0) 2023.01.17