@RestController //rest Api를 처리하는 controller 라는 것을 선언
@RequestMapping("/api") // 주소를 할당하기 위해 선언
public class ApiController {
@GetMapping("/hello") // localhost:8080/api/hello 로 get 메서드를 request
public String hello(){
return "hello world";
}
@RestController
@RequestMapping("api/get")
public class GetApiController{
@GetMapping(path="hello") // default value = path
public String getHello(){ return "hello";}
@GetMapping(path="/path-variable/{name}")
public String pathValue(@PathVariable(name="name") String pathName){
System.out.println("path Variable : " + pathName );
return pathName);
}
public String pathValue(@PathVariable(name="name") String pathName){
에서 (name ="name") 을 지정 하지 않고 String name으로 해도 된다, 하지만 주의할점은 prop의 이름과 변수의 이름이 같아야 한다.
search?name=jongse&age=25&OOO 등..
(?key=value&key2=value2 ) 규칙을 갖는다.
http://localhost:8080/api/get/query-param?use=jong&email=visionwill@naver.com&age=25 URL 에서 query 받기
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());
});
return sb.toString();
}
@GetMapping("query-param)
public String queryParam(
@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;
}
파라미터와 변수를 같이 설정해줘야한다. 하지만 문제점은 받는 param 의 수가 많아지면 일일이 하기가 어려움
여기서 사용하는 것이 DTO
public class UserRequest{
private String name;
private String email;
private int age;
// ... getter and setter
//@overloading toString..
}
DTO 주의점은 , DTO에 선언한 변수와 param 의 표기 방법이 다를 수 있다. 이럴 경우
@JsonProperty(name)
@GetMapping(path="query-param")
public String queryParam(UserRequest userRequest){
System.out.println(userRequest.getName());
System.out.println(userRequest.getEmail());
System.out.println(userRequest.getAge());
return userRequest.toString();
}
DTO로 param 을 받아오는 경우 주의할점은 따로 @requsetParam을 명시하지 않고, 객체를 받는다.