์์ฒญ ๋งคํ
@RestController
public class MappingController {
@RequestMapping("/hello-basic")
public String helloBasic() {
return "OK";
}
@RestController
@Controller ๋ ๋ฐํ ๊ฐ์ด String ์ด๋ฉด ๋ทฐ ์ด๋ฆ์ผ๋ก ์ธ์๋๋ค. ๊ทธ๋์ ๋ทฐ๋ฅผ ์ฐพ๊ณ ๋ทฐ๊ฐ ๋๋๋ง ๋๋ค.
@RestController ๋ ๋ฐํ ๊ฐ์ผ๋ก ๋ทฐ๋ฅผ ์ฐพ๋ ๊ฒ์ด ์๋๋ผ, HTTP ๋ฉ์์ง ๋ฐ๋์ ๋ฐ๋ก ์ ๋ ฅํ๋ค.
๋ฐ๋ผ์ ์คํ ๊ฒฐ๊ณผ๋ก ok ๋ฉ์ธ์ง๋ฅผ ๋ฐ์ ์ ์๋ค.
@RequestMapping("/hello-basic")
/hello-basic URL ํธ์ถ์ด ์ค๋ฉด ์ด ๋ฉ์๋๊ฐ ์คํ๋๋๋ก ๋งคํํ๋ค.
@RequestMapping ์ method ์์ฑ์ผ๋ก HTTP ๋ฉ์๋๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด HTTP ๋ฉ์๋์ ๋ฌด๊ดํ๊ฒ ํธ์ถ๋๋ค.
@RequestMapping(value = "/mapping-get-v1", method = RequestMethod.GET)
ํน์ HTTP ๋ฉ์๋ ์์ฒญ๋ง ํ์ฉ
/**
* ํธ๋ฆฌํ ์ถ์ฝ ์ ๋
ธํ
์ด์
* @GetMapping
* @PostMapping
* @PutMapping
* @DeleteMapping
* @PatchMapping
*/
PathVariable(๊ฒฝ๋ก ๋ณ์) ์ฌ์ฉ
@GetMapping("/mapping/users/{userId}/orders/{orderId}")
public String mappingPath(@PathVariable String userId, @PathVariable String orderId) {
log.info("mapping userId={},oderId={}",userId,orderId);
return "OK";
@PathVariable - ๋ณ์์ง์
mappingPath - ๋งค์นญ ๋๋ ๋ถ๋ถ์ ํธ๋ฆฌํ๊ฒ ์กฐํ
ํน์ ํ๋ผ๋ฏธํฐ ์กฐ๊ฑด ๋งคํ
@GetMapping(value = "/mapping-param", params = "mode=debug")
public String mappingParam() {
log.info("mappingParam");
return "OK";
}
๋ฏธ๋์ด ํ์ ์กฐ๊ฑด ๋งคํ - HTTP ์์ฒญ Content-Type, consume
@PostMapping(value = "/mapping-consume", consumes = "application/json")
HTTP ์์ฒญ์ Content-Type ํค๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฏธ๋์ด ํ์ ์ผ๋ก ๋งคํํ๋ค.
๋ฏธ๋์ด ํ์ ์กฐ๊ฑด ๋งคํ - HTTP ์์ฒญ Accept, produce
@PostMapping(value = "/mapping-produce", produces = "text/html")
HTTP ์์ฒญ์ Accept ํค๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฏธ๋์ด ํ์ ์ผ๋ก ๋งคํํ๋ค.
HTTP ์์ฒญ - ๊ธฐ๋ณธ, ํค๋ ์กฐํ
@RequestMapping("/headers")
public String headers(HttpServletRequest request,
HttpServletResponse response,
HttpMethod httpMethod,
Locale locale,
@RequestHeader MultiValueMap<String, String> headerMap,
@RequestHeader("host") String host,
@CookieValue(value = "myCookie", required = false) String cookie
)
MultiValueMap
MAP๊ณผ ์ ์ฌํ๋ฐ, ํ๋์ ํค์ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ ์ ์๋ค.
HTTP header, HTTP ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ์ ๊ฐ์ด ํ๋์ ํค์ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ ๋ ์ฌ์ฉํ๋ค.
HTTP ์์ฒญ ํ๋ผ๋ฏธํฐ - @ModelAttribute
@RequestParam String username;
@RequestParam int age;
HelloData data = new HelloData();
data.setUsername(username);
data.setAge(age);
์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์์ ํ์ํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ๊ทธ ๊ฐ์ฒด์ ๊ฐ์ ๋ฃ์ด์ฃผ๊ธฐ
์คํ๋ง์ ์ด ๊ณผ์ ์ ์์ ํ ์๋ํํด์ฃผ๋ @ModelAttribute ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
@ResponseBody
@RequestMapping("/model-attribute-V1")
public String modelAttributeV1(@ModelAttribute HelloData hellodata){
log.info("username={},age={}",hellodata.getUsername(),hellodata.getAge());
return "OK";
}
@ModelAttribute
์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์์ ํ์ํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ๊ทธ ๊ฐ์ฒด์ ๊ฐ์ ๋ฃ์ด์ค๋ค
์์ฒญ ํ๋ผ๋ฏธํฐ์ ์ด๋ฆ์ผ๋ก HelloData ๊ฐ์ฒด์ ํ๋กํผํฐ๋ฅผ ์ฐพ๋๋ค.
ํ๋กํผํฐ
๊ฐ์ฒด์ getUsername() , setUsername() ๋ฉ์๋๊ฐ ์์ผ๋ฉด, ์ด ๊ฐ์ฒด๋ username ์ด๋ผ๋ ํ๋กํผํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
@Conroller ์ ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋ผ๋ฏธํฐ ๋ชฉ๋ก์ ๋ค์ ๊ณต์ ๋ฉ๋ด์ผ์์ ํ์ธํ ์ ์๋ค.
> https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-ann-
> @Conroller ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์๋ต ๊ฐ ๋ชฉ๋ก์ ๋ค์ ๊ณต์ ๋ฉ๋ด์ผ์์ ํ์ธํ ์ ์๋ค.
> https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-ann-
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard