티스토리 뷰

Spring

Spring - MVC HttpRequestMapping

엔꾸꾸 2019. 7. 22. 22:39

Spring - HttpRequestMapping

  • Http요청을 처리하는 역할을 하는것을 handler라고 한다.

  • 가장 간단한 핸들러 코드작성

    • @RequestMapping 애노테이션을 활용하여 /hello 요청에 대한 핸들러 코드작성
    • @RequestMapping 사용시 HttpMethod를 설정하지않을경우 기본적으로 모든 method에 대한 요청을 받는다.

/hello Handler

  • 간단한 테스트코드 작성
    • @RunWith(SpringRunner.class)
      • SpringBoot Test를 실행할수있도록 도와주는 JUnitClass 테스트용 ApplicationContext를 생성해준다.
    • @WebMvcTest
      • Web과 관련된 테스트 애노테이션, Web과 관련된 Bean들만 등록이된다.
      • MockMvc객체를 주입받을수 있다.
    • MockMvc를 통해서 MockHttpServletRequest를 보내 slicingTest가 가능하다.
    • GET /hello 로 요청을 보내는 테스트
    • print(): 요청과 응답의 결과 출력
    • andExpect: 기대 결과값
      • status().isOk(): 상태값이 200이기를 기대
      • content().string("hello"): 응답 본문에 hello 문자열이 존재하는것을 기대

TestCode

 

  • 테스트 결과

result

 

  • 특정 Method만 허용하고싶은경우 RequestMapping에 method속성을 활용한다.

    • org.springframework.web.bind.annotation의 RequestMethod enum을 활용한다.
  • RequestMethod.java

RequestMethod

 

  • GET /hello 로 요청을 제한하도록 핸들러코드 수정

GET /hello

 

  • PUT /hello로 테스트진행

PUT / hello

 

  • 결과
    • 405 MethodNotAllowed 응답
    • Header [Allow:"GET"] 허용된 메서드정보도 함께 응답한다.

result

 

  • 다수의 Method를 허용하고싶을경우 배열을 활용하여 선언한다.

handler

 

  • 하나의 Method만 허용하고 싶은경우 Meta애노테이션을 활용하여 좀더 간략하게 사용가능하다.

    • GetMapping
    • PostMapping
    • ...
  • @RequestMapping을 ClassLevel에 설정이 가능하다.

    • 해당 class에 존재하는 모든 핸들러의 baseURL이 된다.
    • ClassLevel에 Method를 제한하는경우 해당 클래스의 모든 Handler는 해당 Method로 요청이 제한된다.

HttpMethod

  • GET

    • 클라이언트가 서버의 리소스를 요청할때 사용함
    • 캐싱이 가능하다. 캐시와 관련된 헤더를 응답에 실어보낼수 있음.
    • 브라우저 기록에 남는다.
    • 북마크가 가능하다.
    • 민감한 데이터를 보낼때 사용하지말것.
    • idemponent (동일 요청에 대한 응답이 같음)
  • POST

    • 클라이언트가 서버의 리소르를 수정하거나, 새로 생성할때 사용함
    • 서버에 보내는 데이터를 POST 요청 본문에 담는다.
    • 캐싱이 불가능하다.
    • 브라우저 기록에 남지않는다.
    • 북마크 할 수 없다.
    • 데이터 길이 제한이없다.
  • PUT

    • URI에 해당하는 데이터를 새로 만들거나, 수정할 때 사용한다.
    • POST와 다른점은 URI에 대한 의미가 다르다.
      • POST의 URI는 보내는 데이터를 처리할 리소스를 지칭
      • PUT의 URI는 보내는 데이터에 해당하는 리소스를 지칭
    • idemponent
  • PATCH

    • PUT과 비슷하지만, 기조 ㄴ엔티티와 새 데이터의 차이점만 보낸다.
      • 부분수정
    • idemponent
  • DELETE

    • URI에 해당하는 리소스를 삭제할 때 사용한다.
    • idemponent

'Spring' 카테고리의 다른 글

Spring - MVC ContentType _Mapping  (0) 2019.07.22
Spring - MVC URI_Pattern_Mapping  (0) 2019.07.22
Spring - MVC DataBinding_PropertyEditor  (0) 2019.07.21
Spring - MVC HttpMessageConverter_XML  (0) 2019.07.21
Spring - MVC - HttpMessageConverter_JSON  (0) 2019.07.21
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함