[Spring] RequestMapping이란?

[Spring] RequestMapping이란?

RequestMapping

컨트롤러 구현 = 클라이언트의 요청을 처리할 메서드를 구현
  • client는 URL로 요청을 전송
  • 요청 RUL을 어떤 메서드가 처리할지 여부를 결정하는 것이 @RequestMapping
ex)


어떤 경로를 한 메서드에 처리하고 싶다면, 배열로 경로 목록을 지정하면 됨


@PathVariable을 이용한 경로 변수


  •  경로를 한개 이상 사용도 가능

  • 게시글의 내용을 보여주는 URL을 보면 http://host/readArticles?id=10와 같이 요청 파라미터를 이용하는 경우가 많음
    • but) URL자체를 이용해서 게시글 링크를 표현하는 경우도 많음
  • @RequestMapping 어노테이션은 경로에 {변수}형식의 경로 변수를 사용할 수 있음
  • @PathVariable을 사용하면 경로 변수 값을 파라미터로 전달받을 수 있음
  • Spring은 경로 변수의 값을 파라미터 타입에 맞게 변환해줌
    • 경로 변수를 파라미터 타입으로 변환할 수 없을 경우, 스프링 MVC는 웹 브라우저에서 400에러 코드를 응답 결과로 전송함

Ant 패턴을 이용한 경로 매핑

* : 또는 그 이상의 글자(matches zero or more characters)

  • ex) @RequestMapping("/member/*.info")
  • /member/로 시작하고, 확장자가 .info로 끝나는 모든 경로

? : 1개 글자(matches one character)
  • ex) @RequestMapping("/faq/f?00.fq")
  • /faq/f로 시작하고, 1글자가 사이에 위치하고 00.fq로 끝나는 모든 경로

** : 0개 또는 그 이상의 디렉토리 경로(matches zero or more directories in path)
  • ex) @RequestMapping("/folders/**/files")
  • /folders/로 시작하고, 중간에 0개 이상의 중간 경로가 존재하고 /files로 끝나는 모든 경로 예를 들어, /folders/files, /folders/1/2/3/fiels 등이 매핑됨.

처리 가능한 요청 컨텐트 타입, 응답 가능한 컨텐트 타입 한정


  • 서비스 또는 클라이언트/서버간 통신 방식으로 REST API가 자리를 잡으면서 HTTP의 데이터로 JSON이나 XML을 전송하는 경우가 증가
  • @ReqeustMapping은 컨트롤러 메서드에서 처리 가능한 요청 컨텐트 타입과 응답 컨텐트 타입을 제한하는 방법을 제공
  • 같은 URL이라 하더라도 컨텐트 타입에 따라 다른 응답을 보여주도록 처리
  • 요청 컨텐트 타입 제한 = consumes 속성을 사용하면 됨
    • ex) Content - Type 요청 헤더가 "application/json"인 경우만 처리하고 싶다면 다음의 코드를 사용
  • 반대로 응답 결과로 JSON을 요구하는 요청을 처리하고 싶다면, 즉 Accept 요청 헤더에 application/json이 포함된 경우만 처리하고 싶다면, producess 속성을 사용하면 됨




출처


댓글

이 블로그의 인기 게시물

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?

[Python] # -*- coding: utf-8 -*-를 쓰는 이유