[스프링 입문] 스프링 웹 개발 기초-③API

enxnong·2023년 4월 18일
0

Spring

목록 보기
8/26

김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술을 보면서 공부한 내용입니다.

1. API란?

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

→ 사람을 위한 인터페이스가 아닌 응용 프로그램을 위한 인터페이스로 프로그램들이 서로 상호작용 하는 것을 도와주는 매개체이다.


2. 실행 방법

간단한 구현을 통해 어떤 방식으로 돌아가는지 확인해보자.

@ResponseBody 문자 반환

1) Controller에 다음과 같은 코드를 작성한다.

		@GetMapping("hello-string")
    @ResponseBody // Http통신 프로토콜 body부분에 데이터를 직접 넣어주겠다라는 의미
    public String helloString(@RequestParam("name") String name){
        return "hello " + name; // spring을 요청하면 문자가 바로 내려가 "hello spring"으로 view에 생성됨
        // view가 필요없이 데이터가 그래도 송출됨
    }
💡 @ResponseBody를 사용하면 view를 사용하지 않고, BODY에 문자 내용을 직접 반환한다

2) url에 ‘localhost:포트번호’ + ‘hello-string?name=값’을 작성하여 실행한다.
⇒ template에 html을 생성하지 않고 그대로 화면에 출력된 것을 확인할 수 있다.

@ResponseBody 객체 반환

문자가 아닌 객체를 반환하면 어떻게 될까?

⇒ 객체를 반환하면 객체가 JSON으로 변환된다.
1) Controller에 다음과 같은 코드를 작성한다.

@GetMapping("hello-api")
    @ResponseBody
    public Hello helloApi(@RequestParam("name") String name) {
        Hello hello = new Hello();
        hello.setName(name);
        return hello; // Hello 객체를 넘김
    }

    static class Hello {
        private String name;
			
				// Property 접근 방식
        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
💡 Getter와 Setter: 데이터를 보호하기 위해 사용한다. 외부에서 직접 접근하는 것을 막는다.

2) url에 ‘localhost:포트번호’ + ‘hello-api?name=값’을 작성하여 실행한다.
⇒ JSON값으로 변환되어 “키:값” 으로 변환된 것을 확인할 수 있다.

3. 원리 설명

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

0개의 댓글