[Spring] 입문 2-3. API

강우엉·2023년 6월 22일

Spring

목록 보기
6/359

💡 API 방식이란?

Spring 개발에서 이야기하는 API 방식이란, JSON 데이터 구조 포멧을 이용하여 클라이언트에게 데이터를 전달하는 방식이다.

💡 @ResponseBody 사용하기

@ResponseBody란?

  • HTTP의 body에 문자 내용을 직접 반환
  • viewResolver 대신에 HttpMessageConverter 가 동작
  • API를 사용하여 view가 따로 없고, 소스코드를 봐도 출력된 문자만 보인다.

이제 API 방식을 사용하여 helloController를 발전시켜보자.

  1. Hello라는 클래스를 만들고, name 변수에 해당하는 getter와 setter를 생성한다.
 static class Hello {
        private String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
  1. helloAPI라는 메서드를 만들어주는데 @ResponseBody를 붙여주고@GetMapping으로 url과 연결하고, @RequestParam을 통해 url에 변수의 정보를 받도록 한다. setName을 통해 hello 객체의 변수 name에 대입한다.
@GetMapping("hello-api")
@ResponseBody
public Hello helloAPI(@RequestParam("name") String nameValue){
	Hello hello = new Hello();
	hello.setName(nameValue);
	return hello;
}
  1. 위 코드를 실행하게되면 JSON 방식으로 표현이 된다.
    예를 들어 hello의 name 변수에 spring을 전달했다면 웹 브라우저에
    {"name" : "spring"}이라고 보여진다.
    즉, @RequestParam을 통해 변수 nameValue을 받은 후, 해당 값을 hello 객체의 name 변수에 값을 넣어준다. 그리고 hello 객체를 반환한다.

💡 JSON 이란?

JSON (JavaScript Object Notation)

  • JavaScript Object Notation라는 의미의 축약어로 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 DATA 교환 형식
  • Javascript에서 객체를 만들 때 사용하는 표현식을 의미
  • JSON 표현식은 사람과 기계 모두 이해하기 쉬우며 용량이 작아서,
    최근에는 JSON이 XML을 대체해서 데이터 전송 등에 많이 사용한다.
  • JSON은 데이터 포맷일 뿐이며 어떠한 통신 방법도, 프로그래밍 문법도 아닌 단순히 데이터를 표시하는 방법일 뿐이다.

JSON 특징

  • 서버와 클라이언트 간의 교류에서 일반적으로 많이 사용된다.
  • 자바스크립트 객체 표기법과 아주 유사하다.
  • 자바스크립트를 이용하여 JSON 형식의 문서를 쉽게 자바스크립트 객체로 변환할 수 있는 이점이 있다.
  • JSON 문서 형식은 자바스크립트 객체의 형식을 기반으로 만들어졌다.
  • 자바스크립트의 문법과 굉장히 유사하지만 텍스트 형식일 뿐이다.
  • 다른 프로그래밍 언어를 이용해서도 쉽게 만들 수 있다.
  • 특정 언어에 종속되지 않으며, 대부분의 프로그래밍 언어에서 JSON 포맷의 데이트를 핸들링 할 수 있는 라이브러리를 제공한다.

💡 API 동작 원리

  1. 웹브라우저에서 localhost:8080/hello-api를 요청히면 tomcat 서버에서 hello-api 요청을 spring에게 전달한다.

  2. spring은 Controller에 hello-api가 mapping되었는지 확인한다.
    이 때, @ResponseBody 어노테이션이 붙어있지 않다면, viewResolver에게 전달해 template engine이 html로 변환하였을 것이다.

  3. @ResponseBody 어노테이션이 붙어있고, hello 객체를 반환할 것이기 때문에 JSON 방식으로 데이터를 만들어서 반환한다.

  4. helloController에서 메서드가 실행되어 hello 객체를 넘기면 HttpMessageConverter가 작동하는데, 이 때 단순 문자열을 반환하면 StringConverter가, 객체를 반환하면 JsonConverter가 동작한다.

  5. JSON 스타일로 바꾼 내용을 요청환 웹 브라우저에 응답한다.

profile
우엉이의 코딩 성장일기💻

0개의 댓글