본문 바로가기

Spring/Spring

spring-boot API 방식

웹을 개발한다는 건 크게 세 가지 방법이 있다.

-정적 컨텐츠 -MVC와 템플릿 엔진(가장 많이 씀-jsp, php 등) -API

API 방식

정적 콘텐츠 방식 제외하고. MVC방식이냐 API방식이냐만 알고 있으면 됨.

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

@ResponseBody HTTP 통신 프로토콜(그 중 POST)에... header부분과 body부분이 있다. HTML header/body말고 HTTP 통신 과정에 body부분에 이 내용을 직접 넣어주겠다.

반응을 HTTP BODY에 넣어라~는 의미

HTML태그 없습니당

이런 식으로 화면에 띄우는 걸로는 잘 사용 안함. 데이터를 넘길 때 많이 쓰는 듯

@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;
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
	}

hello라는 객체를 넘겼는데 ? json데이터 타입으로 넘겨졌음.

key:value.getter setter 자연스럽게 json데이터 타입으로 넘겨주넹...

ajax. 비동기 통신할 때 API방식으로 받아오는 것.

static class Hello {
	private String name;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

자바 빈 규약. private String name 바로 접근 못함.

메서드로 셋팅하고 접근해서 가져와. 자바 빈 표준 방식. 게터세터 방식. 프로퍼티 접근 방식이라고도 하고...

@ResponseBody

자~~ 요청합니다! 톰켓 내장 서버에서 요청이 왔네! 스프링 컨테이너에 던져. 어라라? @responseBody 붙어있네? MVC에선 viewResolver에다가 했는데... @ResponseBody있다? 어? viewResolver대신에 HttpMessageConverter 동작!

단순 문자면 StringConverter동작, 데이터 그대로 던질꺼야.

근데 객체면??? 뭐야? 객체 어떻게 줘야 하는 거지? 객체가 오면 기본 default가 json방식으로 데이터를 만들어서 Http응답에 반환하겠다. HttpMessageConverter- JsonConverter동작 바꿔서 응답해준다.

이것이 바로 @ResponseBody를 사용한 API임.

근데 왜 API라고 이름이 붙어진걸까???? 객체 → json으로 바꿔주는 라이브러리 유명한 게 Jackson2이라는 라이브러리임. 구글의 gson도 있음. API이용해서 HttpMessageConvertor가 동작해서 API방식인가보다.

MappingJackson2HttpMessageConverter(스프링은 이걸 기본으로 넣어뒀음)

타임리프도 JSP도 템플릿 엔진인가?

https://okky.kr/article/342347

해당 포스팅은 인프런 김영한님의 스프링 강의를 따라가며 정리한 노트입니다 :)

반응형