[Spring Boot] 스프링 웹 개발 기초③ - API

토끼는 개발개발·2022년 2월 18일
0

Spring Boot

목록 보기
8/18
post-thumbnail
post-custom-banner

스프링 웹개발 방식

1. 정적 컨텐츠 : 파일 자체를 웹 브라우저에 전달
2. MVC와 템플릿 엔진 : server에서 html파일을 변환 후 전달
3. API : xml이나 JSON(default)으로 client에게 전달, server끼리 통신할 때 사용

스프링 웹 개발 발법에는 위와 같이 크게 3가지가 있다.
그 중 API 동작과정을 살펴보겠다.



3. API

API란 Application Programming Interface의 약자로, 어떤 서버의 특정한 부분에 접속해서 그 안에 있는 데이터와 서비스를 이용할 수 있게 해주는 소프트웨어 도구이다.


ResponseBody 문자 반환

@ResponseBody를 사용하면 뷰 리졸버를 사용하지 않고, BODY에 문자 내용을 직접 반환한다. (HTML BODY TAG가 아니다.)

@GetMapping과 @ResponseBody 어노테이션을 사용해 위와 같이 코드를 작성했다.

localhost:8080/hello-string?name=spring 을 요청하자 위와 같은 화면이 출력됐다.
MVC 템플릿 엔진과 다른점이 무엇일까?

페이지 소스를 보면 그 차이를 알 수 있다. 페이지 소스를 살펴보자.

페이지 소스가 위와 같다.

이는 MVC 템플릿 엔진으로 처리한 페이지의 소스이다.

@ResponseBody를 사용하면 뷰 리졸버를 사용하지 않고, BODY에 문자 내용을 직접 반환하는 것을 알 수 있다.



@ResponseBody 객체 반환

문자가 아닌 객체를 받으면 어떻게 될까?
@ResponseBody 를 사용하고, 객체를 반환하면 객체가 JSON으로 변환된다.

위와 같이 코드를 작성했다. 문자가 아닌 객체를 받는다.

Getter와 Setter: 데이터를 보호하기 위해 사용한다. 외부에서 직접 접근하는 것을 막는다.

문자를 받을 때와는 다른 화면이 출력됐다.
JSON으로 변환되어 키-값 쌍으로 반환된 것이다.



@ResponseBody 사용 원리

  1. 웹 브라우저에서 localhost:80080/hello-api를 요청
  2. 스트링 부트에 내장된 톰캣 서버가 스프링 컨테이너에게 hello-api 보냄
  3. 컨트롤러에서 hello-api 매핑 있는지 확인
  4. @ResponseBody일 때 문자인 경우, 변환 없이 body로 직접 반환
  5. @ResponseBody일 때 객체인 경우, JSON 방식으로 반환(default)

@ResopnseBody를 사용하면 'viewResolver' 대신에 'HttpMessageConverter'가 동작한다. 이때 기본 문자는 'StringHttpMessageConverter'가 동작하고, 기본 객체는 'MappingJackson2HttpMessageConverter'가 동작한다.




Ref.

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술(김영한 강사님)

profile
하이 이것은 나의 깨지고 부서지는 기록들입니다
post-custom-banner

0개의 댓글