KEEP GOING
[스프링 부트(SPRING BOOT)] API 구현하기 본문
반응형
(1) src/main/java/com.ssnc.inflearn.controller/helloController.java
@GetMapping("hello-spring")
@ResponseBody
public String helloSpring(@RequestParam("name") String name) {
return "hello" + name;
}
이 메소드를 보시면 "hello" 문자열과 name 객체에 담긴 문자열 값을 리턴하고 있습니다!
@RequestParam 어노테이션은 클라이언트가 name이라는 key를 통해 직접 value 값을 넣어줄 수 있도록 하는 기능입니다.
이해가 잘 안되신다면 지난 번에 배웠던 내용을 상기해봅시다.
(참고를 위해 삽입한 코드입니다.)
@Controller
public class HelloController {
@GetMapping("/hello")
public String hello(Model model) {
model.addAttribute("data", "hello!!");
return "hello";
}
}
이런식으로 model.addAttribute()를 사용하여 개발자가 key data에 대한 value 값을 입력해줬었는데요! 이 value값을 클라이언트 쪽에서 입력받을 수도 있습니다!! 그건 밑에서 설명할게요~
@ResponseBody 어노테이션은 클라이언트에게 전달 받은 데이터를 name에 담고
이를 http response body부에 담아 화면 상에 출력하기 위해 사용합니다~
자, 그렇다면 클라이언트로부터 (key에 매핑되는) 데이터를 어떻게 받을 수 있을까요?
url에 쿼리스트링을 통해 입력받으면 됩니다!
쿼리스트링으로 data를 받아 helloSpring 메소드의 매개변수인 name에 담고
이를 "hello" 문자열과 함께 return 값으로 출력할 수 있습니다.
예를 들어 설명해보겠습니다.
run as를 통해 spring을 작동시키고 해당 경로인 localhost:8080/hello-spring에 쿼리 스트링으로
원하는 input 데이터를 넣어봅시다.
이 데이터는 spring 상에서 name이라는 객체에 담기고
이는 http 통신시 body 부에 담겨 우리 눈에 결과 값으로 나타납니다.
(아 참 쿼리스트링이 뭔지 모르겠으면 공부..)
제 기준에서 가볍게 설명 드리자면,
쿼리 스트링이란 url 뒤에 ?key=value와 같은 문법으로 클라이언트가 서버 쪽에 input data를 넘길 수 있는 방식을 의미합니다.
(1)코드에서 data name에 대한 key값을 @RequestParam을 통해 "name"이라고 설정해주었기에
localhost:8080/hello=spring?name=출력하고 싶은 데이터
를 적어주시면 화면 결과가 나타납니다.
그럼 한 번
localhost:8-8-/hello-spring?name= 송강짱잘생김
을 넣어볼까요? ㅎㅎ
동작이 잘 되는 것을 확인 할 수 있습니다!
저는 입력시 띄어쓰기를 하나 넣었더니 url에 %20 라는 값이 들어갔네요~
통신 과정에서 띄어쓰기를 저렇게 변환하는구나 ~ 하고 가볍게 넘어갑시다.
2. src/main/java/com.ssnc.inflearn.controller/helloController.java
@Controller
public class HelloController {
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name){
Hello hello = new Hello();
hello.setName(name);
return hello;
}
static class Hello{
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
자 이번에는 그냥 문자열 데이터가 아닌 클래스 객체를 return문으로 넣어주려고 합니다.
HelloController 클래스 내부에 Hello 클래스를 선언하려고 하기에 static으로 잡아주었습니다.
기본적으로 변수, get, set 메소드를 넣어주시고 helloApi 메소드를 만들어
그 안에 Hello 클래스 객체를 생성해주었습니다~
마찬가지로 cilent가 쿼리스트링을 통해 넘겨준 data는 메소드 내 클래스 객체에 담기게 되고
return 시 화면에 결과로 출력되는 것을 볼 수 있습니다.
저는 쿼리스트링 값으로 정민을 넣어봤더니 {"name" : "정민"} 과 같은 데이터가 출력되었습니다.
이러한 형식을 JSON 방식이라고 하는데요~
서버가 클라이언트한테 data를 보낼 때 양식이 필요합니다.
이 때 보내는 양식을 JSON이라 생각하시면 됩니다!
이때 xml 방식을 사용하기도 하고 JSON 방식을 사용하기도 하는데
xml은 <> ... </> 같은 태그를 사용해서 데이터를 보내기 때문에 불필요한 데이터가 넘어가게 됩니다.
효율성을 위해 요즘에는 JSON 방식을 더 선호한다고 합니다~
JSON은 {키:값} 으로 구성되어 비교적 깔끔하기 때문이죠.
(spring을 이해하고 싶으시면 굳이 찾아보지 마시고 이정도만 이해하고 넘어가셔도 좋을듯 하네용~)
오늘 실습은 여기서 마무리 하려고 합니다! 감사합니다.
*위 내용은 인프런 스프링 입문 김영한님의 영상을 참고하여 작성한 내용입니다
반응형
'web > springboot' 카테고리의 다른 글
[스프링 부트(SPRING BOOT)] MVC & 템플릿 엔진 사용하여 웹 구현하기 (0) | 2021.07.22 |
---|
Comments