[TIL] RequestParam, ModelAttribute, RequestBody 그리고 index.html

phdljr·2023년 11월 2일
0

TIL

목록 보기
22/70
post-custom-banner

여태까지 요청 데이터를 매핑하는 방법으로 RequestBody를 주로 사용해왔다. 아무래도 프론트와 통신할 때 JSON을 많이 사용하기 때문이다.

그러다 RequestParam과 ModelAttribute에 대해 알아보는 시간을 가졌는데, 무슨 차이인지 정확히 기억이 안나서 정리해보는 시간을 갖게 되었다.


RequestParam

  • 페이로드의 데이터를 기본 자료형(+String)에 매핑하는 어노테이션
    • 하나의 데이터를 하나의 변수에만 대입해주는 역할
  • GET 메소드에선 URI의 쿼리 스트링으로 요청(어노테이션 생략 가능)
    • 하나라도 요청을 못받으면 에러 발생
    • 단, required를 false로 설정하면 null이 대입
  • POST 메소드에선 페이로드(바디)의 쿼리 스트링으로 요청

ModelAttribute

  • 자바 객체에 요청 데이터를 매핑하는 어노테이션
    • 여러 데이터를 하나의 객체에 대입해주는 역할
  • 일치하는 필드가 없으면 null로 매핑
  • GET 메소드에선 URI의 쿼리 스트링으로 요청(어노테이션 생략 가능)
  • POST 메소드에선 페이로드(바디)의 쿼리 스트링으로 요청
  • setter나 생성자가 필수
    • 특정 인수만 존재하는 생성자나 setter만 있을 경우, 그 필드만 받아오고 나머진 null 또는 기본 데이터만 받아옴
  • 둘 다 어노테이션이 생략 가능하면, 어떻게 판단해서 적용되는가?
    • 클래스 타입이라면 ModelAttribute, 기본 자료형이면 RequestParam으로 인식

RequestBody

  • application/json 형태의 데이터를 매핑하는 어노테이션
    • json 요청 데이터를 받는 역할
  • 이름을 안맞춘 곳은 null로 대입
  • 기본 생성자 필수

index.html

  • resources/static/index.html 파일을 추가해두면, 서버의 루트 경로로 접속 시 기본적으로 index.html 파일을 반환한다.
  • 스프링부트 기본 설정임
profile
난 Java도 좋고, 다른 것들도 좋아
post-custom-banner

0개의 댓글