Development/Spring

스프링 입문 - API

양선규 2023. 10. 26. 22:12
728x90
반응형

정적 컨텐츠를 제외하면, 웹 브라우저(클라이언트)에게 데이터를 전송하는 방법은 크게 2가지가 있다.

첫번째가 MVC(Model, View, Controller), 두번째가 API이다.

 

MVC 방식은 html로 View를 만들고 템플릿 엔진으로 렌더링하여 전송한다고 하면,

API 방식은 View를 사용하지 않고, 데이터 그 자체 또는 객체를 렌더링 없이 그대로 전송한다.

 

 

HelloController

 

우선 API 방식을 실습해보기 위해, 컨트롤러를 열어주자.

 

 

helloString 메소드 생성

 

컨트롤러 맨 아래쪽에, helloString 메소드를 생성하자.

여기서 중요한건 @ResponseBody 어노테이션이다.

ResponseBody는 데이터를 http response의 body부분에 직접 넣어주겠다는 뜻이다.

 

리턴값은 "hello " + name 이므로, 웹브라우저엔 hello (입력값) 형태로 출력될 것이다.

스프링을 재가동하고 확인해보자.

 

 

hello sunkue

 

접속하면, 이렇게 정상적으로 출력된 걸 확인할 수 있다.

그런데 사실 이런 방식을 자주 사용하진 않는다.

 

따라서 이번엔, 객체를 리턴해보겠다.

우선 리턴할 객체부터 만들어보자.

 

 

Hello 클래스 작성

 

가장 아래쪽에, 정적 클래스인 Hello를 선언하고 Getter와 Setter도 만들어 준다.

HelloController 클래스 안에, Hello 클래스가 중첩 클래스로 선언된 것이다.

 

 

helloApi

 

이제 Hello객체를 리턴할 메소드 helloApi를 만들자.

 

Hello hello = new Hello() 명령으로 Hello객체를 hello 변수에 담고,

Setter인 setName 메소드를 이용해 입력받은 name을 객체 필드에 담는다.

마지막으로 Hello 객체가 담긴 hello를 리턴한다.

 

그런데 String 타입은 그대로 출력한다고 해도, 객체는 어떻게 출력되는 것일까?

스프링을 재가동하고 확인해 보자.

 

 

hello-api

 

{"name" : "sunkue"} 가 출력되었다.

이것은 key : value 형식으로 데이터를 출력하는 "JSON"방식 이라고 한다.

 

@ResponseBody 어노테이션이 있을 경우, 스프링은 데이터를 어떻게 전송할지 생각한다.

만약 리턴값이 "String 타입"이라면, 위에서 봤던 것처럼 데이터를 그대로 전송한다.

만약 리턴값이 "객체"라면, 지금 결과처럼 JSON 형식으로 전송하는게 스프링의 "기본값" 이다.

 

JSON과 비슷한 데이터 형식으로는 XML도 있는데, 지금은 대부분 JSON만 사용하기 때문에 크게 신경쓸 필요는 없으나 스프링은 XML 형식으로도 데이터를 전송할 수 있다.

 

클라이언트는 데이터 요청 시 http request의 accetp 헤더에서 전달받을 데이터 형식을 지정할 수 있는데,

"상관 없음"으로 설정되어 있다면 스프링은 기본적으로 JSON형태로 전송하지만, 만약 XML로 되어있다면 XML로 전송하게 된다.

물론 이것이 가능하려면 스프링에 XML 라이브러리가 존재해야 한다.

 

 

페이지 소스코드

 

페이지 소스코드를 확인해 보면, 출력된 웹페이지와 일치한다는 걸 알 수 있다.

MVC방식처럼 렌더링 하는것이 아닌, 데이터를 그대로 출력하는 API방식이기 때문에 그렇다.

 

 

이렇게 API방식을 간단하게 실습해보았다.

728x90
반응형