application/x-www-form-urlencoded는 html의 form의 기본 Content-Type

요즘은 자주 사용하지 않지만 여전히 사용하는 경우가 종종 존재합니다.

(요즘은 application/json 많이 사용)

 

jsonx-www-form-urlencoded 차이

- application/json : {key: value}의 형태로 전송

- application/x-www-form-urlencoded : key=value&key=value의 형태로 전송

 

예시

    @Test
    @DisplayName("/posts 요청시 Hello world를 출력한다.")
    void test() throws Exception {
        //expection
        mockMvc.perform(post("/posts")
                        .contentType(MediaType.APPLICATION_FORM_URLENCODED)
                        .param("title","글제목입니다")
                        .param("content", "글 내용입니다")
                ) //application/json
                .andExpect(status().isOk()) // 통신이 정상일때
                .andExpect(content().string("Hello World"))
                .andDo(print()); // 요청한 로그 보기 위해
    }

 

 

해당 api 통신을 통해 값 가져오는 방법

 

1. @RequestParam String titile

@PostMapping("/posts")
public String post(@RequestParam String title, @RequestParam String content) {
        log.info("title ={} content={}", titie, content);
        return "Hello World";
        }

 

2. @RequestParam Map<String, String>

	@PostMapping("/posts")
    public String post(@RequestParam Map<String, String> params) {
        log.info("params ={}", params);
        String title = params.get("title");
        return "Hello World";
        }​

 

3. @ModelAttribute

    @PostMapping("/posts")
    public String post(@ModelAttribute PostCreate params) {
        log.info("params ={}", params.toString());
        return "Hello World";
    }

+ Recent posts