Back-End/REST with spring boot basic

03. GET

728x90

HELLO 메서드: 모든 METHOD 허용, 출력은 STRING

controller 패키지를 추가한다. com.eastflag.fullstack 패키지를 선택후 우클릭후 new -> package 를 누른 다음 controller를 입력한다.

HelloController 자바 클래스를 만든다. controller 패키지를 선택 후 우클릭 new -> Java Class 후 HelloController를 입력한다

HelloController에 아래와 같이 작성한다.

package com.test.springboot.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

  @RequestMapping("/hello")
  public String hello() {
    return "Hello test";
  }

}

빨간색이 뜨면 import 가 되지 않은것이다. Alt-Enter를 눌러서 자동 import 해준다.

@RestController annotation은 안드로이드 등 모바일의 사용성이 높아지면서 4.x에 처음으로 도입된 기능으로 웹페이지를 리턴해주는게 아니라 json, xml 등의 Resource를 리턴해줄수 있도록 해주는 기능이다.

RequestMapping의 의미는 받아들이는 url 경로를 의미한다. 호스트가 localhost이므로 http://localhost:8080/hello url 주소값이 된다. 그리고 리턴타입은 스트링이므로 이 유알엘을 호출하면 hello test라는 스트링값이 리턴된다. 리스타트 후 브라우저에서 테스트해본다.
http://localhost:8080/hello
브라우저에 Hello test라고 출력되면 정상동작이다. 브라우저에서 하는 모든 호출은 GET 방식인데, 위 API는 모든 메서드를 받아들이기 때문에 가능하다.

이번에는 POST로 테스트해보자.

잘된다. 그 이유는 @RequestMapping이 모든 메서드를 혀용해주기 때문이다.

HELLO2 메서드 :   GET

@GetMapping("/hello2")
public String Hello2() {
	return "Hello GET test";
}

RequestMapping을 GetMapping으로 바꾸었다.

postman으로 post를 테스트하면 결과는 http 상태코드가 405번 method not allowed가 나온다. Get 메서드만 허용되었는데 Post 메서드로 호출하였다는 얘기다.

HELLO3 메서드: GET + QUERY PARAMETER

@GetMapping("/hello3")
public String hello3(@RequestParam("name") String name) {
	return "Hello" + name;
}

GET 방식은 body에 데이터를 넣을수 없으므로 URL 뒤에 ? 다음에 key=value&key=value… 이런식으로 key=value를 &로 연결해서 데이터를 보낸다.
서버에서는 @RequestParam에서 key에 해당하는 값을 꺼내서 name에 할당한다.

HELLO4  메서드:  GET  + URI PARAMETER

@GetMapping("/hello32/{name}")
public String hello32(@PathVariable String name) {
	return "Hello" + name;
}

http://localhost:8080/hello32/aaa 이런식으로 보내는 방식이 Uri Parameter 방식이다. @Pathvariable을 사용하여 받는다.