첫 기능 만들기

이경영·2022년 10월 12일
0

스프링부트2

목록 보기
6/19
post-custom-banner

Controller

모델과 뷰 사이에서 브릿지 역할을 수행
앱의 사용자로부터 입력에 대한 응답으로 모델 및 뷰를 업데이트하는 로직을 포함
사용자의 요청은 모두 컨트롤러를 통해 진행되어야 함
컨트롤러로 들어온 요청은 어떻게 처리할지 결정하여 모델로 요청을 전달함.

예) 쇼핑몰에서 상품을 검색하면 그 키워드를 컨트롤러가 받아 모델과 뷰에 적절하게 입력을 처리하여 전달함

@RestController : restful한 솔루션을 만들기 위해 필수적 🎈🎈🎈

  • SpringFramework 4버전부터 사용가능한 어노테이션
  • @Controller에 @ResponseBody가 결합된 어노테이션
  • 컨트롤러 클래스 하위 메소드에 @ResponseBody 어노테이션을 붙이지 않아도 문자열과 JSON등을 전송할 수 있음
  • View를 거치지 않고 HTTP ResponseBody에 직접 Return 값을 담아 보내게됨

Client가 Request를 보내면 DispatcherServlet에서 핸들로 매핑을 통해 컨트롤러로 가게됨. 여기서 만들게 될 부분이 Controller(@RestController)
메세지 컨버터를 통해 HTTP Response를 통해 클라이언트에게 보낸다.

@RequestMapping

  • MVC의 핸들러 매핑을 위해서 DefaultAnnotationHandlerMapping을 사용
  • DefaultAnnotationHandlerMapping 매핑정보로 @RequestMapping 어노테이션을 활용
  • 클래스와 메소드의 RequestMapping을 통해 URL을 매핑하여 경로를 설정하여 해당 메소드에서 처리
    • value: url설정
    • method : GET, POST, DELETE, PUT, PATCH 등
  • 스프링 4.3버전부터 메소드를 지정하는 방식보다 간단하게 사용할 수 있는 어노테이션을 사용할 수 있음
    @GetMapping
    @PostMapping
    @DeleteMapping
    @PutMapping
    @PatchMapping

-- 실습

  • Run 하고 난 후

: 어떠한 메소드로 보내도 사용가능함. method를 지정해줘야함.
keep-alive : timeout=60초

package com.example.testproject.controller;

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

@RestController //Controller인식을 위해
public class HelloController {

    //@RequestMapping(value="/hello" , method = RequestMethod.GET) //고전적 방법
    @GetMapping("hello")
    public String hello(){
        return "Hello world!";
    }
}


: 더이상 Delete로는 안됨 ( 메소드가 허용되지 않았다 )
: Allow : GET ( GET으로는 허용가능하다 )

profile
꾸준히
post-custom-banner

0개의 댓글