반응형

 

개념


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

 

전달하는 방식~ 전달하는 방식이에요 방식!

 

큰 차이점은 데이터가 어디에 위치하는가에 있습니다. POST 요청시에 URL에 파라미터가 보이지 않는 이유는 데이터가 요청 바디에 포함되기 때문입니다. 그렇기 때문에 GET과 POST에 따라 데이터를 URL에 추가해야할지 요청 바디에 추가해야할지를 알고 있어야만 합니다. 

 

 

GET 방식과 POST방식의 장단점 및 차이점


1.Select 기능을 원한다면 GET 메서드, Update 기능을 원한다면 POST 메서드  

2.검색 결과 등 고정적인 주소 및 링크 주소로 사용될 수 있다면 GET 메서드를 사용  

3.정보를 담을 URL길이(최대 2048자)는 한계가 있기 때문에 이를 해결하고 싶다면 POST 메소드를 사용

4.POST 메서드를 쓰면 정보를 숨길 수 있다. 하지만 SSL(Secure Sockets Layer)를 사용안하면 GET과 마찬가지

5.GET은 캐시가 남아있어 전송 속도가 빠르고 POST는 캐시가 남지 않아 보안적인 면에서 유리 

6.GET은 브라우저 히스토리에 파라미터가 남고 POST는 저장되지 않는다.  

 ) http://url/.javatis.com?id=22&pw=11 URL 중요 파라미터 노출

7.GET은 ASCII캐릭터만 허용하나 POST는 한계가 없다. POST는 바이너리 데이터가 허용된다. 따라서 파일 입출력을 위해 POST메소드가 이용된다

 

 

정리

사람 : 누구야 get post 차이가 뭐냐?

누구 : 두가지 모두 HTTP 전송 방식의 타입입니다.

GET 일단 SELECT 기능면에서 우수하여 SELECT 기능으로 많이 쓰고,캐시가 남아있어 보안적인 측면이 좋지 않으나, 전송속도가 우수하고 파라미터가 url 노출되는 점이 있습니다.

POST 주로 CREATE,UPDATE,DELETE 사용되며,캐시가 남지 않아 보안적인 면에서 좋고 요청 Request Body 데이터가 들어가기 때문에 파라미터가 노출 되지 않는점이 차이점입니다.


 

일단 이론은 대충 알겠고, 그래서 어떻게 어느 상황에 써야 하는거야?

 

HTTP 결국엔

클라이언트 -> 서버 요청 방식인데..

이걸 보낼때 전송방식 대표로 GET,POST 있답니다. 외에도 PUT, DELETE 나중에

 

GET(Read) 즉 SELECT 할때쓰는것이적당합니다.

SELECT

서버에 데이터를 가져와 보여주기 위함

 

POST(Create) INSERT 할때 쓰는것이 적당합니다.

INSERT,update,delete

서버의 ,상태를 바꾸기 위함

 

 

문법


공통

$(document).ready(function() {

signUp();

getUserList();

})

 

GET 방식


Client

function getUserList(){
$.ajax({
type : "GET",
data : { id : "gildong", pw : 119}),
url : "/jquery/signUp.do",
success:function(data){
console.log(data);
}
})
}

 

Server (Spring mvc Controller)

@RequestMapping(value="jquery/getUserListEx.do",method=RequestMethod.GET)

@ResponseBody

public List<Object> getUserListEx(SignUp signUp){

System.out.println("getUserListEx.do GET & id / PW : " + signUp.toString());

List<Object> list = null;

//list = service.getmethod();

return list;

}

GET 정보


 

POST JSON.stringify() 방식


VO Class

public class SignUp {

	private String id;
	private String pw;
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPw() {
		return pw;
	}
	public void setPw(String pw) {
		this.pw = pw;
	}
	
	@Override
	public String toString() {
		return "SignUp [id=" + id + ", pw=" + pw + "]";
	}
	
}
//pom.xml dependency 추가

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-databind</artifactId>

<version>2.9.5</version>

</dependency>

//이 라이브러리를 추가 안해주면 HTTP 415 에러를 만나게된다.

 

(Client 형식 JSON === Server 형식 JSON 맞춰줘야한다.)

 

Client

function signUp(){

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

(@ResponseBody @RequestBody 헷갈림 주의 부릅)

 

Server (Spring mvc Controller)

@RequestMapping(value="jquery/signUp.do",method=RequestMethod.POST,produces = "application/json;charset=UTF-8")
@ResponseBody
public SignUp signUp(@RequestBody SignUp signUp){
//menuservice.signUpMethod(signUp);
System.out.println("signUp.do POST & id : " + signUp.toString());
return signUp;
}

POST 정보

 

 

GET & POST 결과

 

 

외에도 $("#form").serialize() , $.get , $.post , 폼 파라미터 넘기기 방식이 있습니다.

 

대표로 자주 쓰이는 문법을 정리 해봤습니다.

반응형

+ Recent posts