StudyRepository
article thumbnail
Published 2023. 4. 1. 15:21
6. API (Spring 6) Spring
728x90

 

 

 

 

 

정적 컨텐츠 방식을 제외하면, 2가지 방식만 기억하면 됩니다.

 

 

 

 

 

이전에 봤던, MVC방식처럼 View를 찾아서 템플릿 엔진을 통해 어떤 화면을 렌더링해서 html을 웹브라우저에 넘겨주는 방법이 있고,

 

 

오늘 배울 API 방식이 있습니다.

 

 

 

 

 

 

HelloController에 다음 코드를 추가해줍니다.

 

 

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

 

 

@ResponseBody는 body부분에 return된 데이터를 직접 넣어주겠다는 뜻으로 보면 됩니다.

 

 

 

저 코드에서 name에 spring을 넣어주면 "hello spring"이라는 문자가 요청한 클라이언트에 그대로 내려가게 됩니다.

 

 

 

여기서 템플릿 엔진과의 차이는 API는 뷰라는 개념이 없다는 것입니다. 그냥 리턴된 값을 그대로 내려줍니다.

 

 

 

 

 

 

 

이 페이지의 소스코드를 보면,

 

 

 

 

 

html태그 하나 없이 깨끗한걸 확인하실 수 있습니다.

 

 

 

 

상당히 무식하다고도 보일 수 있습니다.

 

 

하지만 이런 문자열이 아니라 데이터를 반환한다고 생각해봅시다.

 

 

아래의 코드를 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;
    }
}

 

 

 

위 코드에서

public String getName() {
    return name;
}

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

 

이 부분은 Generate 단축키인 'command+N' 사용하여 넣어주도록 합시다.

 

 

 

 

 

빌드해준 뒤 view-source:http://localhost:8080/hello-api?name=spring!!! 를 실행해주면 

 

 

다음과 같은 화면을 보실 수 있습니다.

 

 

 

이 방식은 JSON이라는 방식입니다.

 

 

 

출처:https://velog.io/@surim014/JSON%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

 

 

 

 

 

뭔가 설명이 많지만 

 

 

{"name":"spring!!!"}

 

그냥 name이 key spring이 value라고 보시면 됩니다.

 

 

(출처:  https://codingazua.tistory.com/4 )

 

 

옛날에는 xml방식도 많이 사용했지만 너무 무거워서 요즘은 다 JSON을 씁니다.

 

 

ResponseBody 사용 원리

 

1. 웹브라우저에서 localhost:8080/hello-api를 내장 톰켓 서버를 거쳐 스프링으로 넘어갑니다.

 

2. hello-api가 있는걸 확인합니다.

 

3. 원래라면 template가 viewResolver에게 던져줬겠지만 ResponseBody가 붙어있는걸 확인하면 http의 응답에 그대로 데이터를 넘겨줍니다.

 

4. 문자라면 html응답에 그대로 넣어서 넘겨주겠지만, 객체받았으므로 (일반적으로) JSON방식으로 데이터를 만들어서 http응답에 반환합니다.

(ResponseBody가 오면 hello객체를 보고 HttpMessageConverter가 동작을 하여 (ResponseBody가 없다면 viewResolver가 동작함)

단순 문자라면 StringConverter가, 객체라면 JsonConverter가 동작함.)

 

5. {name: spring}을 웹브라우저에 반환합니다.

 

 

 

 

 

 

728x90

'Spring' 카테고리의 다른 글

7. 비즈니스 요구사항 (Spring)  (1) 2023.04.03
Intelli J 단축키  (0) 2023.04.03
5. MVC와 템플릿 엔진 (Spring 5)  (0) 2023.04.01
4. 스프링 웹 개발 기초 (Spring 4)  (0) 2023.03.31
3. 빌드하고 실행하기 (Spring 3)  (0) 2023.03.30
profile

StudyRepository

@Minseo26262

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!