ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 핸들러 메소드 3부: @RequestParam
    SPRING/스프링 MVC 2021. 6. 30. 00:37

    @RequestParam 

    - 요청 매개변수에 들어있는 단순 타입 데이터를 메소드 아규먼트로 받아올 수 있다.

    - 값이 반드시 있어야 한다. 

       -> required=false 또는 Optional을 사용해서 부가적인 값으로 설정할 수도 있다.

    - String이 아닌 값들은 타입 컨버전을 지원한다. 

    - Map<String, String> 또는 MultiValueMap<String, String>에 사용해서 모든 요청 매개변수를 받아 올 수도 있다. 

    - 이 애노테이션은 생략 할 수 있다.

     

    예시 :

    @Controller
    public class SampleController {
    
        @ResponseBody
        public Event getEvent2(@RequestParam(required = false, defaultValue = "ok") String name) {
            Event event = new Event();
            event.setId(1);
            event.setName(name);
            return event;
        }
        @PostMapping("/events4")
        @ResponseBody
        public Event getEvent3(@RequestParam Map<String, String> params) {
            Event event = new Event();
            event.setName(params.get("name"));
            return event;
        }
    }
    

     

    테스트 소스

    @RunWith(SpringRunner.class)
    @WebMvcTest
    public class Hm2Test {
    
        @Autowired
        MockMvc mockMvc;
    
        @Test
        public void getEvents3() throws Exception {
            mockMvc.perform(get("/events3?name=jump"))
                    .andDo(print())
                    .andExpect(status().isOk())
                    .andExpect(jsonPath("name").value("jump"));
    
        }
    
        @Test
        public void getEvents4() throws Exception {
            mockMvc.perform(post("/events4")
                    .param("name","jump"))
                    .andDo(print())
                    .andExpect(status().isOk())
                    .andExpect(jsonPath("name").value("jump"));
    
        }
    }
    

     

    1. @RequestParam은 테스트 케이스 getEvents3와 같이 URL로 파라메터를 받을 수 있다. (GET방식)

    2. 테스트 케이스 getEvent4와 같이 Map으로도 데이터를 받을 수 있다. (form 데이터의 경우

       (GET, POST방식 모두 가능))

     

     

Designed by Tistory.