새소식

반응형
Java/Spring

ajax 요청 시 contentType(application/json, application/x-www-form-urlencoded)

  • -
반응형

ContentType 은 HTTP 요청 시 자원을 명시하기 위해 사용한다.

 

HTTP 의 간단한 구조는 아래와 같다.

Request Line
HTTP Header
Empty Line
Message Body

 

Post Method 를 이용해 ajax 요청 시 Message Body 부분에 데이터가 들어가고

해당 자원에 대해 명시하기 위해 HTTP Header 의 Content-Type 을 사용하는데

Content-Type에는 Body에 들어간 자원이 어떤 자원인지 표시해준다.

 

Content-Type 종류

TEXT

text/css, text/javascript, text/html, text/plain

 

FILE

multipart/form-data

 

Application

application/json, application/x-www-urlencoded

 

 

주로 사용하는 Application 형식만 정리해보겠습니다.

 

application/json

application/json 형태는 데이터 형식을 json 형태로 날리기 위해 사용된다.

Content-Type 을 application/json 형태로 날리게 되면

{key1 : value1, key2 : value2} 형식으로 날라간다.

 

주로 Java 의 Model 로 받을 때 편리하다.(개인적인 생각)

 

// javascript
let json = new Object();
json.name = 'obo';
json.number = '01011112222';

// 형식 - { name : 'obo', number : '01011112222' }

$.ajax({
    type: 'POST'    
    url: '/main',
    dataType: 'json',
    contentType: 'application/json',
    data: JSON.stringify(json),
    success: function(result){
        console.log(result);
    }
})

// model
public class TestModel {
    String name;
    String number;
    ...getter
    ...setter
    ...toString
}

// java Controller
@RequestMapping(value="/main")
@ResponseBody
public String main(@RequestBody TestModel model){
    system.out.println("model : "+model.toString());
    // 결과
    // TestModel { "name" : "obo", "number" : "01011112222" }
    return "";
}

 

JSON.stringify(json)

JSON.stringify 함수는 object 형태의 데이터를 문자형 json으로 변경해준다.

 

 

application/x-www-form-urlencoded

html 의 form 태그의 기본 Content-Type 이며,

주로 Jquery 의 serialize() 함수를 이용해 직렬화 시켜 사용한다.

 

데이터는 key1=value1&key2=value2.. 형태로 사용한다.

 

// javascript
let json = "name=obo&number=01011112222";

$.ajax({
    type: 'POST'    
    url: '/main',
    dataType: 'json',
    contentType: 'application/x-www-form-urlencoded',
    data: json,
    success: function(result){
        console.log(result);
    }
})

// java Controller
@RequestMapping(value="/main")
@ResponseBody
public String main(@RequestParam("name") String name,
                             @RequestParam("number") String number)
{

    system.out.println("name: "+name);
    system.out.println("number: "+number);

    // 결과
    // name: obo

    // number: 01011112222
    return "";
}

 

 

 

 

참고 : https://jw910911.tistory.com/117

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.