KEEP GOING

[스프링 부트(SPRING BOOT)] API 구현하기 본문

web/springboot

[스프링 부트(SPRING BOOT)] API 구현하기

jmHan 2021. 7. 23. 10:03
반응형

 

 

(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 값으로 출력할 수 있습니다.  

 

예를 들어 설명해보겠습니다.

 

1번 실습 예제

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 시 화면에 결과로 출력되는 것을 볼 수 있습니다. 

 

 

2번 실습 예제

저는 쿼리스트링 값으로 정민을 넣어봤더니 {"name" : "정민"} 과 같은 데이터가 출력되었습니다.

이러한 형식을 JSON 방식이라고 하는데요~

 

서버가 클라이언트한테 data를 보낼 때 양식이 필요합니다. 

이 때 보내는 양식을 JSON이라 생각하시면 됩니다! 

 

이때 xml 방식을 사용하기도 하고 JSON 방식을 사용하기도 하는데

xml은 <> ... </> 같은 태그를 사용해서 데이터를 보내기 때문에 불필요한 데이터가 넘어가게 됩니다.

 

 효율성을 위해 요즘에는 JSON 방식을 더 선호한다고 합니다~

JSON은 {키:값} 으로 구성되어 비교적 깔끔하기 때문이죠. 

 

(spring을 이해하고 싶으시면 굳이 찾아보지 마시고 이정도만 이해하고 넘어가셔도 좋을듯 하네용~)

오늘 실습은 여기서 마무리 하려고 합니다! 감사합니다.

 

 

 

 

 

*위 내용은 인프런 스프링 입문 김영한님의 영상을 참고하여 작성한 내용입니다

반응형
Comments