스프링 MVC 활용(5) : HTTP 요청 맵핑하기 4부 - 헤더와 매개변수

de_sj_awa·2021년 7월 3일
0

5. HTTP 요청 맵핑하기 4부 - 헤더와 매개변수

특정한 헤더가 있는 요청을 처리하고 싶은 경우

  • @RequestMapping(headers = “key”)

특정한 헤더가 없는 요청을 처리하고 싶은 경우

  • @RequestMapping(headers = “!key”)

특정한 헤더 키/값이 있는 요청을 처리하고 싶은 경우

  • @RequestMapping(headers = “key=value”)
@RunWith(SpringRunner.class)
@WebMvcTest
public class SampleControllerTest {

    @Autowired
    MockMvc mockMvc;
	
    @Test
    public void helloTest() throws Exception{
        mockMvc.perform(get("/hello")
               .header(HttpHeaders.FROM, "localhost"))
               .andDo(print())
               .andExpect(status().isOk());
    }
}
@Controller
public class SampleController {

    @GetMapping("/hello", headers = HttpHeaders.FROM)
    @ResponseBody
    public String hello(){
        return "hello";
    }
}

또는 특별한 헤더가 없는 요청을 처리하고 싶은 경우는 !을 추가한다.

@Controller
public class SampleController {

    @GetMapping("/hello", headers = "!" + HttpHeaders.FROM)
    @ResponseBody
    public String hello(){
        return "hello";
    }
}

헤더 키 값이 모두 일치하는 경우에만 매핑하고 싶으면 다음과 같이 작성한다.

@Controller
public class SampleController {

    @GetMapping("/hello", headers = HttpHeaders.FROM + "=" + "localhost")
    @ResponseBody
    public String hello(){
        return "hello";
    }
}

특정한 요청 매개변수 키를 가지고 있는 요청을 처리하고 싶은 경우

  • @RequestMapping(params = “a”)

특정한 요청 매개변수가 없는 요청을 처리하고 싶은 경우

  • @RequestMapping(params = “!a”)

특정한 요청 매개변수 키/값을 가지고 있는 요청을 처리하고 싶은 경우

  • @RequestMapping(params = “a=b”)
@Controller
public class SampleController {

    @GetMapping("/hello", params = "name")
    @ResponseBody
    public String hello(){
        return "hello";
    }
}
@RunWith(SpringRunner.class)
@WebMvcTest
public class SampleControllerTest {

    @Autowired
    MockMvc mockMvc;
	
    @Test
    public void helloTest() throws Exception{
        mockMvc.perform(get("/hello")
               .param("name", "spring"))
               .andDo(print())
               .andExpect(status().isOk());
    }
}

파라미터 키 값이 모두 일치하는 경우에만 매핑하고 싶으면 다음과 같이 작성한다.

@Controller
public class SampleController {

    @GetMapping("/hello", params = "name=spring")
    @ResponseBody
    public String hello(){
        return "hello";
    }
}

참고

  • 인프런 : 스프링 웹 MVC(백기선)
profile
이것저것 관심많은 개발자.

0개의 댓글