그렇다면 HTTP 쿼리 스트링(querystring), 주소 변수 매핑(path variable)을 알아보자.
예를들어 통닭집이 있다고 가정해보자.
통닭집에는 양념, 후라이드, 반반이 있다.
치킨집 번호는 02-2222라고 할 때, 고객(클라이언트)는 번호로 요청한다.(02-2222로 get 요청)
하지만 요청만 오고 말이 없다?
구체적으로 어떤 통닭을 달라고 하는지 요청(쿼리 스트링 or 주소 변수 매핑)이 필요하다.
?type= 로 시작하면 쿼리 스트링 : 구체적인 요청(?type=양념)
슬래시(/)로 시작하면 주소 변수 매핑(/양념)
@RestController
public class QueryPathController {
//{}(중괄호)대신에 chickenQuery(String type) 이렇게 괄호 안에서 데이터 받음
@GetMapping("/chicken")
public String chickenQuery(String type) {
return type+" 배달갑니다.(쿼리스트링)";
}
//{}는 주소에서 데이터를 전달받을 수 있음
@GetMapping("/chicken/{type}")
public String chickenPath(@PathVariable String type) {
return type+" 배달갑니다.(주소변수매핑)";
}
}
구체적 요청이 없을 시(lcalhost:8080/chicken 까지만 입력) > null
쿼리 스트링(?type=)으로 요청
주소 변수 매핑(/)으로 요청
한 눈에 봐도 주소 변수 매핑(path variable)이 더 보기 쉽고 사용도 쉬움
이러한 이유로 Springboot에서 더 많이 사용됨.