Web/Spring

[Spring] 웹 개발을 하는 세 가지 방법(3) : API

728x90

웹 개발의 세 가지 방법

1. 정적 컨텐츠

2. MVC와 템플릿 엔진

3. API  👈

 

정적 콘텐츠가 아니라면

HTML로 내리냐 API 방식으로 데이터를 바로 내리느냐 두 가지만 생각하면 된다!!

 

 

 

 

API

 

> 간단한 String API 구현해보기

1. HelloController에  코드 추가

@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
    return "hello " + name; //"hello spring"
}

@ResponseBody : HTML의 응답 Body에 직접 데이터를 넣어주겠다

뷰 없이 문자가 그대로 내려간다

 

 

2. 실행

localhost:8080/hello-string?name=spring!!!!!!! 으로 접속

다른 게 없어보이지만 페이지 소스를 다음과 같이 들어가보면

아무것도 없이 "hello spring!!!!!!!"만 들어있는 것을 확인할 수 있다...!

 

 

 

 

 

> 객체를 리턴하는 API 만들어보기 ⭐

1. HelloController에 추가

@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. 실행 결과

JSON 형식으로 출력되는 것을 확인할 수 있다

(@ResponseBody 하면 기본적으로 JSON 방식이 선택된다)

 

 

 

💡 Getter / Setter

윈도우에서는 Alt + Insert > Getter and Setter > Ok

get, set이 생성된다 (getName, setName)

private 변수를 메서드를 통해 접근할 수 있다

-> 자바 빈 규약(표준 방식), 프로퍼티 접근 방식

 

 

 

 

 

 

@ResponseBody 사용 원리

 

'@ResponseBody' 를 사용

- HTTP의 BODY에 문자 내용을 직접 반환

- 'viewResolver' 대신에 'HttpMessageConverter'가 동작

- 기본 문자처리 : 'StringHttpMessageConverter'

- 기본 객체처리 : 'MappingJackson2HttpMessageConverter'

- byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음

 

 

 

 

 

 

 

 

 

 

 

이 포스팅은 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술을 듣고 공부한 내용을 정리한 것입니다

 

 

728x90