스프링/0. 입문, 전체방향

6강 API 방식으로 데이터 주기

sdafdq 2023. 7. 6. 21:54

앞서

정적

MVC

API

방식이 있다고 했다.

 

정적은 html에 손 안댄거고,

MVC는 html을 좀 바꿔서 웹브라우저에 주는거고,

API는 특별한 형식의 데이터를 주는 방법이다. 그래서 사실 이거는 클라이언트와의 소통보다는 서버끼리의 소통이 알맞다.

 

    @GetMapping("hello-string")
    @ResponseBody
    public String helloString(@RequestParam("name") String name){
        return "hello " + name;
    }

GetMapping은 누누히 설명 했고,

@ResponseBody

이 부분이 좀 특별하다.

잘은 모르겠지만, 아마 나중에 배울건데 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