코드네임 JY

[스프링 입문] API 본문

백엔드 공부

[스프링 입문] API

영재임재영 2022. 12. 5. 23:24

미리보기

 API 방식에 대해 알아보자!
 서버와 웹 브라우저 간 상호작용을 정리해보자!


🍟 API

API 방식의 큰 틀은 브라우저에 필요한 순수한 데이터만을 전달하는 것이다.

 

여기에도 크게 두 가지 방식이 있다!

객체가 아닌 것을 넘겨줄 때

@GetMapping("hello-string")
@ResponseBody  // 1️⃣
public String helloString(@RequestParam("name") String name) {
    return "hello " + name;  // 2️⃣
}

1️⃣ : @ResponseBody 태그는 HTTP 메시지 body 부분에 데이터를 담아서 보낼 수 있다.
(참고 : Client ➡️ Server  Request 라고 하고, Server ➡️ Client  Response 라고 한다!)
2️⃣ : 리턴 타입이 String 이므로, 문자열을 반환하였다.

 

실제로 실행해 보았을 때, 결과 화면만 보면 별다른 것이 없는 것 같다.
하지만 내부 소스 코드를 확인해보면 차이점을 느낄 수 있다!

 

일반적인 MVC & 템플릿 엔진 방식을 사용하여 View 화면에 띄울 때는
HTML 코드가 소스 코드로 보이는 반면, 위 결과는 ONLY 데이터만 보인다.

객체를 넘겨줄 때 (이게 더 중요!!)

@GetMapping("hello-api")
@ResponseBody  // 1️⃣
public Hello helloApi(@RequestParam("name") String name) {
    Hello hello = new Hello();  // 2️⃣
    hello.setName(name);
    return hello;  // 3️⃣
}
    
static class Hello {  // 4️⃣
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

1️⃣ : API 방식을 사용할 때는 꼭 @ResponseBody 태그를 써주어야 한다!
2️⃣ : Hello 클래스에 새로운 객체를 생성하였다.
3️⃣ : 리턴 타입이 (Hello)객체 이므로, 객체를 반환하였다.
4️⃣ : (Hello 클래스에 대한 설명은 아래 다시 언급하겠다.)

 

실제로 실행해보면.. JSON 형식 으로 화면에 보여지게 된다!
소스 코드 보기를 누른 것도 아니고, 바로 위 화면처럼 뜨게 된다.

 

JSON 형식 에 대한 간단한 정의를 보면,

JavaScript Object Notation (JSON)은 Javascript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷입니다.

 

라고 뜨는데 사실 JSON 은 객체를 위해 만들어진 포맷이라고 보면 된다!
그렇게 생각한다면 객체를 넘겼는데 왜 JSON 형태로 떴는지 이해가 간다.

 

자바에서 메소드의 리턴 타입으로 사용자가 정의한 클래스 타입을 사용할 수 있는데,
여기서는 객체를 리턴 타입으로 사용하였고, 결국 서버는 브라우저에 필요한 데이터를
JSON 형태 로 전달해준 것이다! (API 방식은 JSON 형태로 사용하는 것이 더 보편적)

 

🍿 서버와 웹 브라우저 간 상호작용 정리

MVC & 템플릿 엔진을 사용하면, 서버는 완성된 HTML을 브라우저에 전달한다!
템플릿 엔진을 통해 완성된 HTML이 브라우저에 넘어가고, 브라우저는 단순 뷰어에 불과한다!

 

반면 API 방식을 사용하면, 서버는 브라우저에 필요한 순수한 데이터만을 전달한다!
대체로 객체를 리턴하여 JSON 형식으로 데이터를 다룰 수 있게 한다!

 

리턴 타입 의미 정리
1️⃣ 번째 메소드 "MVC & 템플릿 엔진" : "hello-template.html 로 렌더링해라!"
2️⃣ 번째 메소드 "API return String" : "String data 를 넘겨라!"
3️⃣ 번째 메소드 "API return Object" : "객체 형태로 넘겨라! JSON 형식으로 데이터가 보여질 것!"

 
Comments