본문으로 바로가기

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

category Java/Spring 2022. 1. 4. 14:21
반응형

김영한 스프링 강의

 

 

 

 

 

 

스프링으로 웹을 개발하는 방법은 3가지가 있다.

 

 

 

 

 

  ▶ 정적 컨텐츠  

      - 서버에서 일련의 작업이 필요 없이 html 파일을 웹 브라우저에게 그대로 내려준 것이다.

        흔히 쓰이는 문법이 들어가지 않은 기본 html 파일이 이에 해당된다.

 

 

 

 

 

 

  ▶ MVC와 템플릿 엔진  

      - 모델(Model), 뷰(View), 컨트롤러(Controller) 패턴 방식으로 개발하는 것이다.

        정적 컨텐츠와는 다르게 기존에 있던 html을 서버에서 변형을 해주어 

        변형된 html을 사용자에게 보여준다. (jsp와 비슷)

 

 

 

 

 

 

  ▶ API  

      - JSON 포맷 형식의 데이터를 사용자에게 전달하는 방식이다. 

        예를 들면 날씨 정보 API를 주는 openweathermap 사이트에서는 날씨에 대한 정보를

        JSON 형식으로 제공해준다.( {날씨:맑음,  기온:-1 ...} ) 

        이러한 전달 방식의 형태를 API라고 한다.

 

 

 

 

 

 

 

 

 

이번 포스팅에선 MVC와 템플릿엔진의 방법으로 개발하는 법을 알아보고자 한다.

 



 

 

 

 

 


 

● API  

 

 

 

API를 사용하고자 할 때,

@ResponseBody 라는 애노테이션이 사용된다.

 

 

서버가 실행될 때, 생성된 스프링 컨테이너에서

컨트롤러를 읽는다.

 

 

이때 클래스 명 위에 @ResponseBody 이 있으면 

 

HTTP에 있는 HttpMessageConverter

JsonConverter 혹은 StringConverter를 이용해

 

해당 클래스의 반환 값을 알맞게 변환을 한 후,

사용자에게 이 데이터를 응답해준다.

 

 

JsonConverter   : 반환 값이 객체일 경우 json 형식으로 반환해줌

StringConverter :  반환값이 문자열일 경우 문자열 형태 그대로 반환해줌

 

 

 

 

변환이 다 되었으면,

해당 클래스의 반환값을 html의 body가 아닌

HTTP 프로토콜의 body부분에 데이터를 넣어준다.

 

 

 

이로써 사용자는 클래스의 반환 값을 브라우저에서 확인할 수 있다.

 

 

 

 

 

이제 API 방식으로 개발하는 방법을 알아보도록 하자.

 

 

 

 

 

 

 


 

1. src > main > java > hello.hellospring(본인프로젝트 이름) > 컨트롤러 작성

 

 

 

 

helloController.java

@Controller
public class helloController {

    @GetMapping("hello")
    public String hello(Model model){
        model.addAttribute("data", "hello!");
        return "hello";
    }

    @GetMapping("hello-mvc")
    public String helloMvc(@RequestParam(value = "name") String name, Model model){
        model.addAttribute("name", name);
        return "hello-template";
    }

    @GetMapping("hello-string")
    @ResponseBody // HTTP body에 return 데이터를 직접 넣어주겠다
    public String helloString(@RequestParam(value = "name") String name){
        return "hello " + name;
    }

    @GetMapping("hello-api")
    @ResponseBody
    public Hello helloApi(@RequestParam("name") String name){
        Hello hello = new Hello();
        hello.setName(name);
        return hello;
    }

    static class Hello {
        private String name;

        public String getName() {
            return name;
        }

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

    }
}

 

 

 

 

 

2. 브라우저에서 매핑된 URL 요청

 

 

 

○ /hello-spring?name="사용자 입력"

 

name=spring으로 요청을 보내

hello spring이 출력이 된다.

 

 

 

 

 

 

 

○ /hello-api?name="사용자 입력"

 

Json 형식으로  데이터가 반환된다.

반응형