
오늘은 스프링부트 환경에서 HTTP 메소드별 컨트롤러를 작성해보며 정리해보도록 하겠습니다!
클라이언트와 서버간 요청과 응답 데이터를 전송하는 방식이며, 서버가 수행해야할 동작을
지정해서 요청하는 방법입니다.
이 HTTP 메소드는 아래와 같은 종류로 구성되어 있습니다.
주로 사용되는 메소드는 GET, POST, PUT, DELETE, PATCH 총 5가지 입니다.
아래 내용은 MDN DOCS에서 가져왔습니다.
GET : 데이터 조회
POST : 데이터 추가
PUT : 데이터 대체, 해당 데이터가 없으면 생성
DELETE : 데이터 삭제
PATCH : 데이터 일부분 수정
HEAD : GET과 동일(body 부분을 제외), 상태 줄과 헤더만 반환
OPTIONS : 목적 리소스의 통신을 설정
CONNECT : 목적 리소스로 식별되는 서버로의 터널을 설정
TRACE : 목적 리소스의 경로를 따라 메시지 루프백 테스트
@RequestMapping을 /api로 설정한 뒤 class안에 @RequestMapping을 명시하며 value 값에 매개변수를 받도록 중괄호를 사용하여 작성합니다.
ex) "/get/{test}"
메소드의 매개변수와 값을 연결하기 위해 @PathVariable을 명시하며, @GetMapping 어노테이션과 @PathVariable에 변수의 이름을 동일하게 작성합니다.
최종 URL에 매개변수를 설정하여 요청하면 아래와 같이 나옵니다.
(최종 URL : localhost:8080/api/get/{매개변수 아무거나})
@RestController
@RequestMapping("/api")
public class GetController {
@GetMapping(value = "/get/{name}/{age}")
public String getVariable(@PathVariable String name,
@PathVariable String age) {
return "Name: " + name +", Age: " + age;
}
}

@RestController
@RequestMapping("/api")
public class GetController {
@GetMapping(value = "/get/{name}/{age}")
public String getVariable(@PathVariable("name") String var1,
@PathVariable("age") String var2) {
return "Name: " + var1 +", Age: " + var2;
}
}
@RequestParam 어노테이션 뒤에 변수명, required, defaultValue를 작성해줍니다.
required를 False로 설정하면 파라미터가 존재하지 않을때 예외를 발생시키는데 이를 발생하지 않게 해줍니다.
defaultValue는 파라미터가 존재하지않을때 명시된 기본값이 설정되게 해줍니다.
URL에 쿼리를 설정하여 요청하면 아래와 같이 나옵니다.
(최종 URL : http://localhost:8080/api/get?name=kwon&age=25)
@RestController
@RequestMapping("/api")
public class GetController {
@GetMapping(value = "/get")
public String getVariable(@RequestParam String name,
@RequestParam String age) {
return "Name: " + name +", Age: " + age;
}
}

@RestController
@RequestMapping("/api")
public class GetController {
@GetMapping(value = "/get")
public String getVariable(@RequestParam Map<String, String> param) {
StringBuilder value = new StringBuilder();
param.entrySet().forEach(map -> {
value.append(map.getKey() + " : " + map.getValue() + " ");
});
return value.toString();
}
}
