
GET API는 웹 애플리케이션 서버에서 값을 가져올때 사용하는 API이다.
@RequestMapping : 별다른 설정없이 선언하면 HTTP의 모든 요청을 받는다.
스프링 4.3 버전 이후에는 @RequestMapping사용되지 않음!
대신, 다음과 같은 어노테이션 사용함.
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
// http://localhost:8080/api/v1/get-api/name
@GetMapping(value = "/name")
public String getName(){
return "Flature";
}
URL자체에 값을 담아 요청하기: 매개변수를 받을때 자주 쓰이는 방법 중 하나이다.
중괄호({})로 표시된 위치의 값을 받아 요청하는 것 볼수 있다.
@GetMapping 어노테이션의 값으로 URL입력할때 중괄호를 사용해 어느위치에서 값을 받을 지 지정해야 한다.
// http://localhost:8080/api/v1/get-api/variable1/{String값}
@GetMapping(value = "/variable1/{variable}")
public String getVariable1(@PathVariable String variable){
return variable;
}
@GetMapping 값으로 URL입력할 때 중괄호를 사용해 어느 위치에서 값을 받을지 지정해야 한다.
@PathVariable명시하며, @GetMapping과 @PathVariable에 지정된 변수의 이름을 동일하게 맞춰야 한다.
@GetMapping(value = "/variable2{variable}")
public String getVariable2(@PathVariable ("variable") String var){
return var;
}
쿼리 형식으로 값을 전달 할 수 있음: URI에서 '?'기준으로 우측에 '{키}={값}'형태로 구성된 요청을 전송하는 방법
@RequestParam활용하면된다. 매개별부 부분에 명시하여 쿼리값과 매칭하면 된다.
@GetMapping(value = "/request1")
public String getRequestParam1(
@RequestParam String name,
@RequestParam String email,
@RequestParam String organization {
return name + " " + email + " " + organization;
}
만약 쿼리스트링에 어떤 값이 들어올지 모른다면 Map객체를 활용할 수 있다.
@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란? : Data Transfer Object , 각 클래스 및 인터페이스를 호출하면서, 전달하는 매개변수로 사용되는 데이터 객체이다. 데이터를 교환하는 용도로만 사용하는 객체라서, 별도의 로직이 포함되지 않는다.
DTO클래스에는 전달하고자 하는 필드 객체를 선언하고,
getter/setter메서드를 구현한다.
public class MemberDto {
private String name;
private String email;
private String organization;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getOrganization() {
return organization;
}
public void setOrganization(String organization) {
this.organization = organization;
}
@Override
public String toString() {
return "MemberDTO{" +
"name='" + name + '\'' +
", email='" + email + '\'' +
", organization='" + organization + '\'' +
'}';
}
}
쿼리스트링의 키가 정해져 있지만 받아야 할 파라미터가 많을 경우에는, DTO객체를 활용해 코드의 가독성을 높일 수 있다.
// http://localhost:8080/api/v1/get-api/request3?name=value1&email=value2&organization=value3
@GetMapping(value = "/request3")
public String getRequestParam3(MemberDto memberDTO) {
return memberDTO.toString();
}