앞서
정적
MVC
API
방식이 있다고 했다.
정적은 html에 손 안댄거고,
MVC는 html을 좀 바꿔서 웹브라우저에 주는거고,
API는 특별한 형식의 데이터를 주는 방법이다. 그래서 사실 이거는 클라이언트와의 소통보다는 서버끼리의 소통이 알맞다.
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name){
return "hello " + name;
}
GetMapping은 누누히 설명 했고,
이 부분이 좀 특별하다.
잘은 모르겠지만, 아마 나중에 배울건데 http에는 header부와 body부가 있는데, 그 body에 직접 넣어주는 거라고 한다.
return 내용을
그래서 이거는 애초에 데이터 그대로 내려가는거라. 뷰(View) 쪽이 없다. 그래서 따로 html도 안만든 듯 하다.
그냥
localhost:8080/hello-string?name=spring!
해보면 hello spring! 이라고 뜬다.
근데 소스코드 검사를 해보면 무려 html 코드가 단 한줄도 없다. 정말 떡하니 저것만 있다.
그렇다. 내가 직접 return 저 데이터만 오로지 갔을 뿐이다.
물론 return에 <html>을 시작으로 정의해서 시작하면 태그를 사용가능하겠지만... 굳이? 그렇게는 안씀.
사실 저렇게는 잘 안쓴다.
문자말고 데이터를 얻기 위해,
보통 객체? 를 주기 위해 쓰는 것 같다.
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name){
Hello hello = new Hello();
hello.setName(name);
return hello;
}
static class Hello{
private String name;;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
이런 식으로,
@GetMapping("hello-api")
hello-api를 호출받았을 때 이 함수 실행한다는 뜻,
@ResponseBody
바디에 직접 데이터를 넣어서 보낸다는 뜻.
@RequestParem("name") String name
name의 키로 한 값을 받아 String name에 넣고,
뭐 그 뒤는...
return hello를
@ResponseBody
바디에 직접 데이터를 넣어서 보낸다.
그러면 놀랍게도..
Json 형태로 온다.
물론 바꿀 수도 있는데, Default가 Json이다.
localhost:8080/hello-api 응답을 받으면,
컨트롤러에서 찾아보고 있으니까,
@ResponseBody가 있으니 뷰같은(html)걸 찾는게 아니라,
HttpMessageConverter에 같이 넘겨줌.
여기에는 StringConverter가 있고 JsonConverter가 있는데,
그냥 문자면 StringConverter로 가고 아니면 JsonConverter로 감.
'스프링 > 0. 입문, 전체방향' 카테고리의 다른 글
8강 회원관리 예제 테스트 (0) | 2023.07.06 |
---|---|
7강 회원관리 예제 (0) | 2023.07.06 |
5강 템플릿 엔진 (0) | 2023.07.06 |
4. 웹개발 기초 (0) | 2023.07.06 |
3. 빌드 (0) | 2023.07.06 |