본문 바로가기
Spring_inflearn/입문

[Spring] inflearn 스프링 입문 - 스프링 웹 개발 기초 3

by clolee 2022. 9. 7.

API

 

Controller

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

@ResponseBody

http body부에 data ("hello " + name) 직접 넣어주겠다.

요청한 문자가 클라이언트에 그대로 전달.

템플릿엔진과의 차이 : view 필요 없음

 

http://localhost:8080/hello-string?name=spring

소스 보기 하면 html 태그 없이 문자열만 보여진다.

 

 

 

@ResponseBody 객체를 리턴 (API 방식)

객체 반환, @ResponseBody => json으로 반환(기본)

	@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;
		}
	}

json 방식으로 출력. 

Getter and Setter

Java Bean 규약

private 변수 외부에서 못 꺼냄. 라이브러리에서 쓸 때 메소드를 통해 접근

property 접근방식

 

 

@ResponseBody 사용 원리

웹브라우저에 localhost:8080/hello-api 요청

내장 톰캣 서버가 스프링에 알림. 스프링은 hello-api 찾음. 

@ResopnseBody 어노테이션이 붙어있으므로 http 응답에 데이터를 그대로 넘겨주도록 동작

객체를 반환 시 default로 json 방식으로 데이터를 만들어 http응답에 반환 (기본 정책)

 

@ResopnseBody 로 오면 hello 객체를 넘김.

객체를 보고 몇 가지 조건을 봄. HTTPMessageConverter가 동작함. (기존 - viewResolver)

문자이면 StringConverter, 객체이면 JsonConverter가 동작 함.

객체를 json 스타일로 바꿈

json을 요청한 웹 브라우저 or 서버에 보내줌

 

객체를 json으로 바꿔주는 유명한 라이브러리 - Jackson(spring에 기본 탑재), google Gson

 

HTTP spec - 요청 시 포맷 : Accept 헤더

 

 

정리:

정적 컨텐츠 : 파일을 그대로 내려줌

MVC와 템플릿 엔진 : 템플릿 엔진을 mvc 방식으로 쪼개 view를 템플릿 엔진으로 html을 렌더링 하여 렌더링 된 html을 client에 전달

API : 객체를 반환. HTTPMessageConverter 통해 json 형식으로 바꿔 반환.  view 없이 http response에 값을 넣어 반환.

댓글