본문 바로가기
JAVA

[JAVA] Get 방식과 Post 방식

by 무사뎀벨레 2022. 6. 3.

 

 

 

Get 방식과 Post방식

GET방식POST방식HTTP 프로토콜을 이용해서 서버에 무언가를 전달할 때 사용하는 방식입니다.

 

 

 

 

 

Get 방식


주로 데이터를 조회할 경우 사용(SELECT)

Get방식은 Get이라는 영어단어의 뜻인 '가져오다'라는 방식을 따라,  어떠한 정보를 가져와 조회할 때 사용하는 방식입니다.

 

URL에 데이터를 포함

Get방식은 URL에 파라미터를 포함시켜 요청을 합니다. 전송하는 길이에 제한이 있습니다.

 

캐싱

한번 접근한 뒤 다음번 요청엔 더 빠르게 접근하기 위해 데이터를 저장해두는데 이를 캐싱이라고 합니다. Get방식은 캐싱이 가능합니다. 그렇기 때문에, Post방식보다 속도적인 면에서 빠릅니다.

 

 

 

 

 

Post 방식


주로 데이터를 추가, 수정할 경우 사용(INSERT, UPDATE, DELETE)

Post방식은 '제출하다'라는 영단어 Post의 뜻과 같이, 데이터를 서버로 보내 추가, 수정하기 위해 사용하는 방식입니다.

 

URL에 데이터가 노출되지 않음

Get방식과 다르게 URL에 데이터가 노출되지 않습니다. 그렇지만, 차이점은 이것 뿐이며 보안적으로는 Get방식이던, POST 방식이던 추가로 조치가 필요합니다.

 

데이터를 Body에 포함

POST 방식은 GET 방식과 달리, 데이터 전송을 기반으로 한 요청 메서드입니다. GET방식은 URL에 데이터를 붙여서 보내는 반면, POST방식은 URL에 붙여서 보내지 않고 BODY에다 데이터를 넣어서 보내게 됩니다.

 

따라서, 헤더필드중 BODY의 데이터를 설명하는 Content-Type이라는 헤더 필드가 들어가고 어떤 데이터 타입인지 명시합니다.

아래의 3가지가 대표적인 콘텐츠 타입입니다.

 

1. application/x-www-form-urlencoded
2. text/plain
3. multipart/form-data

 

그렇기 때문에, POST 방식으로 데이터를 보낼 때는 위와 같이 콘텐츠 타입을 명시해줘야 합니다.

 

 

 

 

 

Get 방식과 Post 방식의 사용 예시


1. Get 방식

 

 

Client

function getList(){
    $.ajax({
        type : "GET",
        data : { id : "kane", pw : "qwer1234"}),
        url : "/login.do",
        success:function(data){
        	console.log(data);
        }
    });
}

 

Server

@RequestMapping(value="getList.do",method=RequestMethod.GET)
@ResponseBody
public List<Object> getList(Login login){
    System.out.println("id : " + login.getId());
    System.out.println("pw : " + login.getPw());
    List<Object> list = null;
    list = service.getList();
    return list;
}

 

 

 

 

 

 

2. Post 방식

 

 

Client

function login(){
    $.ajax({
        type : "POST",
        dataType : 'json',
        contentType : "application/json;charset=UTF-8",
        data : JSON.stringify({
            id : "son",
            pw : "zxcv4321",
        }),
        url : "login.do",
        success:function(data){
        	console.log(data);
        }
    })
}

 

Server

 

@RequestMapping(value="login.do",method=RequestMethod.POST,produces = "application/json;charset=UTF-8")
@ResponseBody
public Login login(@RequestBody Login login){
    //service.loginMethod(login);
    System.out.println("id : " + login.toGetId());
    System.out.println("pw : " + login.toGetPw());
    return login;
}

 

반응형

댓글