스프링부트 웹 개발 방식(api)

2024. 3. 19. 08:15스프링

반응형

결론부터 말하면 우리가 브라우저에서 서버로 요청을 보내면 controller에서 요청을 받아 @ResponseBody 를 이용해 객체를 응답 body 부분에 담아서 응답해주는걸 api 방식이라고 한다. 

 

밑에 예시를 봐보자.

 

1) 요청을 보냄(url)

ex1)    http://localhost/hello-json?name=spring    //문자열 반환을 위한 예시

ex2)    http://localhost/hello-json                           //json 반환을 위한 예시

 

2) 서버의 controller에 요청이 매핑됨

 

기존에는 데이터를 받아서 viewResolver한테 넘겨주어서 화면에 렌더링 되어 반환되는데 @ResponseBody가 있는 경우 HttpMessageConverter가 동작하여 데이터를 응답 body에 담아서 반환한다.

HttpMessageConverter에는 JsonConverter(MappingJackson2HttpMessageConverter)와 StringConverter(StringHttpMessageConverter)가 있다.

]

만약 문자열을 반환하면 StringConverter가 작동하고 객체를 반환하면 JsonConverter가 작동한다.
html 태그와 같이 문자열을 반환하면 화면에서 html태그가 적용되어 출력됨. 만약 @Responsebody에 객체를 반환하면 변수명은 key, 값은 value인 json형태로 데이터가 반환됨

//http://localhost/hello-json?name=spring 요청에 대한 처리
	@GetMapping("hello-string")
	@ResponseBody
	public String helloString(@RequestParam(value="name", required=false) String name, Model model) {
		
		// @ResponseBody와 함께 문자열을 html 태그와 같이 반환하면 데이터를 화면에 html 태그가 적용되어 보인다.
		
		return "<h1>hello " + name+"</h1>";
	}

	
	// http://localhost/hello-json 요청에 대한 처리
	@GetMapping("hello-json")
	@ResponseBody
	public Hello hellojson(@RequestParam(value="name", required=false) String name, Model model) {
		Hello hello = new Hello();
		hello.setName("wow");
		
		// @ResponseBody와 함께 이렇게 객체를 반환하면 json형식의 데이터를 반환하게 된다.
		
		return hello;
	}
	
	static class Hello{
		private String name;
		
		public String getName() {
			return name;
		}
		
		public void setName(String name) {
			this.name = name;
		}
	}

 

 

3) 보여지는 화면

ex1 요청이 보여지는 화면

ex2 요청이 보여지는 화면

반응형