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;
}
'JAVA' 카테고리의 다른 글
[JAVA] Log4j의 정의와 설정 (2) | 2022.09.06 |
---|---|
[JAVA] 날짜 비교하기(Date, Calendar, LocalDate, LocalDateTime) (3) | 2022.06.13 |
[JAVA] 현재 날짜, 시간 구하기 (2) | 2022.05.03 |
[JAVA] Collection Framework(List, Queue, Set)과 MAP (4) | 2022.03.31 |
[JAVA] Garbage Collection의 개념과 동작 원리 (2) | 2022.03.28 |
댓글