Control 레이어
클라이언트가 http를 요청시 요청을 처리하고 응답을 해주는 레이어이다.
컨트롤 레이어를 담당할 controller 패키지를 추가한 후 HelloController 자바 Class 를 생성한다.
HelloController를 아래와 같이 작성한다.
package com.sanghun.fullstack.HelloController;
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 해줄 수 있다.
RequestMapping 의미는 받아들이는 URL 경로를 의미한다.
을 통해 확인해보자. 이 URL을 호출하면 Hello test라는 String이 return 된다.
POSTMAN을 통해 확인해 보겠다.
Get과 POST 모두 허용된다.
GET과 POST의 가장 큰 차이점은 GET은 request 시에 Header만 존재하고 Body가 없다는 것이다. 그러므로 URL 다음에 key=value&key=value… 이런식으로 key=value를 &로 연결해서 데이터를 보낸다. 이것을 query 파라메터라고 한다.
GET
@GetMapping("/hello2")
public String hello2() {
return "Hello GET test";
}
위와같이 빨간색으로 글씨가 표시된다면 위와 같이 Alt+Enter을 입력하면 자동으로 import 해준다.
GET + Query Parameter
@GetMapping("/hello3")
public String hello3(@RequestParam("name") String name) {
return "Hello" + name;
}
GET + URI Parameter
두 파라미터간 차이는 name 이라는 키에 gildong 이라는 value를 보낼려면 query paramter 방식에서는 name=gildong 으로 보내게 되는데 uri parameter 방식에서는 /gildong 으로 보내게 된다.
@GetMapping("/hello32/{name}")
public String hello32(@PathVariable String name) {
return "Hello" + name;
}
POST + Query Parameter
Get은 Request시에 body에 데이터를 보낼수가 없다. 따라서 Get은 Query Parameter 밖에 사용할 수가 없다. 하지만 Post는 body에 데이터를 담아서 보낼수 있으므로 body로 데이터를 보내지만 그렇다고 Query Parameter로 데이터를 보낼수 없는것이 아니다.
@PostMapping("/hello33")
public String hello33(@RequestParam("name") String name) {
return "Hello" + name;
}
POST
웹에서 회원가입이나 혹은 로그인 화면 같은데서 input 박스에 값을 넣고 submit 버튼을 누르면 POST방식으로 전송이 되고 input에 담긴 데이터들은 x-www-form-urlencoded 방식으로 body에 담겨서 전송 된다. 이것을 구현해본다.
request body에 들어오더라도 스프링에서는 여전히 @RequestParam으로 데이터를 매핑한다.
@PostMapping("/hello4")
public String hello4(@RequestParam String name) {
return "Hello " + name;
}
'웹서비스 개발 > Spring Rest API' 카테고리의 다른 글
DB의 Board 생성 API 작성 (0) | 2021.05.12 |
---|---|
Spring과 DB연동 (0) | 2021.05.11 |
웹기능, 정적 리소스 추가하기 (0) | 2021.04.16 |
intelliJ IDEA를 통한 Project 생성 (0) | 2021.04.16 |
Spring으로 Rest API 만들기 (0) | 2021.04.16 |
댓글