더모어더베러 2024. 4. 22. 23:13

스프링 웹개발은 크게 3가지로 나눌수 있습니다.

 

  • 정적컨텐츠
  • MVC와 템플릿 엔진
  • API

이번시간에는 API에 대해 알아 보겠습니다.

 

사실 정적컨텐츠, 템플릿엔진, API중 정적컨텐츠는 많이 사용되지 않기 때문에

<MVC와 템플릿엔진>, <API> 이 두가지를 기억해놓으면 됩니다.

 

html로 내리는지 (템플릿엔진) 아니면 데이터로 그냥 바로 내리는지(API) 이 두가지가 가장 자주 사용되는 방식입니다.

 

아래와 같이 Controller에 코드를 추가해보겠습니다.

 

HelloController

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

// 웹 어플리케이션의 첫번째 진입하는곳인 controller
// 어노테이션 Controller를 사용해준다
@Controller
public class HelloController {

  	...

    @GetMapping("hello-string") // url /hello-string 하위주소
    @ResponseBody   // http의 response body에 return "hello " + name 을 넣겠다는 의미
    public String helloString(@RequestParam("name3") String name) {
        return "hello " + name;
    }
}

 

main을 실행하고 url을 입력해줍니다.

 

 

url에 ? 뒤에 get 방식으로 name3에 doohyun이라는 데이터를 넣어주었기 때문에

return "hello " + doohyun 이라는 데이터를 확인 할수 있습니다. 이렇게 데이터를 리턴하려면 

@ResponseBody 어노테이션을 사용하면 됩니다.

 

하지만 이렇게 문자데이터를 리턴해서 사용하는 경우는 거의 없습니다. 보통은 서버 api를 요청하고

json 형식의 데이터를 응답을 받아 사용합니다. 이번엔 api 응답을 리턴하는 코드를 살펴 보겠습니다.

 

HelloController

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

// 웹 어플리케이션의 첫번째 진입하는곳인 controller
// 어노테이션 Controller를 사용해준다
@Controller
public class HelloController {

   	...

    @GetMapping("hello-api")
    @ResponseBody
    public Hello helloApi(@RequestParam("name4") String name) {
        Hello hello = new Hello();  // ctr + shift + enter 누르면 문법 자동완성
        hello.setName(name);
        return hello;   // 객체를 리턴하여 json을 리턴한다
    }

    // static class를 만들면 클래스 안에서 클래스를 사용하가능
    // getter, setter를 추가 하여 json을 사용할수 있게 해준다 (alt + insert 단축키)
    static class Hello {
        private String name;

        public String getName() {
            return name;
        }

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

 

 

 

url을 아래와 같이 입력해줍니다.

 

 

/hello-api 주소에 데이터로 name4=doohyun을 넣었더니 json {"name" : "doohyun"}이 리턴된것을 확인할수 있습니다.

 

 

 

 

원래는 viewResolver가 동작하였지만 @ResponseBody 어노테이션을 사용 하면 HttpMessageConverter가 동작합니다.

 

객체를 json으로 변환 해주는 유명한 라이브러리는 1. jackson 2. gson이 대표적으로 사용됩니다.

 

출처

https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8&unitId=49578&tab=curriculum