HTTP는 HyperText Transfer Protocol의 줄임말로 인터넷에서 HTML같은 리소스를 가져올 수 있게 해주는 프로토콜입니다
사용자(클라이언트)가 브라우저나 다른 것을 통해 Request하면 서버에서는 해당 Request에 맞는 결과값을 Response 해줍니다
GET
Method는 데이터를 요청할 때 사용됩니다
가장 기본이 되는 HTTP 요청인데, Key-Value 형태의 QueryString
(a.k.a QueryParameter)을 통해 필요한 정보를 서버에게 알려줄 수 있습니다.
QueryString
은 요청하려는 URL뒤에 ?
를 붙여서 추가해주면 됩니다.
http://127.0.0.1/food?name=noodles®ion=korea
GET
Method는 캐시에 저장될 수 있고, 브라우저 히스토리에 남겨지기 때문에 보안상 민감한 데이터는 다루어서는 안되며, 길이 제한이 있는 것을 알고 있어야 합니다.
POST
Method는 자원을 만들거나(등록), 수정(업데이트)하기 위해서 데이터를 서버에 전송합니다
GET
Method는 URL 뒤에 QueryString이 붙는 반면에 POST
Method는 Request Body
에 넣어서 보내야 합니다.
Request Body
는 String으로 전송되며, 캐시에 저장될 수 없고 브라우저 히스토리에 기록되지 않습니다.
GET과 다르게 데이터의 길이에도 제한이 없습니다
http.post(url,
headers: {
"accept": "application/x-www-form-urlencoded",
"Content-Type": "application/x-www-form-urlencoded",
},
body: {
'name' : "mukkusi.log",
'address' : 'seoul'
}
)
... 이하 생략
PUT
은 리소스가 있다면 데이터를 수정(업데이트)하고, 없다면 추가하는 메소드 입니다.
POST
메소드가 생성(CREATE)에 목적을 뒀다면, PUT
은 리소스를 덮어쓰거나 없으면 생성하게끔 의도하게 만들어졌습니다.
{
"name": "mukkusi.log",
"address" : "seoul"
}
이라는 값의 name을 수정하기 위해
{
"name" : "mukkusi"
}
라는 값을 PUT으로 보내면
우리가 기대하는 값은
{
"name": "mukkusi",
"address" : "seoul"
}
이지만, PUT 특성상 덮어쓰게 되어
{
"name" : "mukkusi"
}
이렇게 수정됩니다!
DELETE
메소드는 말 그대로 리소스를 삭제하기 위한 메소드 입니다.
PATCH
는 PUT
처럼 리소스를 수정하기 위해 있는 메소드입니다
하지만 PUT
과 다르게, 리소스 일부분만 변경하는 메소드입니다
위 PUT
예시에서, PUT는 특성상 덮어쓰게되어 수정된 값이
{
"name" : "mukkusi"
}
라고 했는데, PATCH를 사용할 시 일부분 수정이 되어
{
"name" : "mukkusi",
"address" : "seoul"
}
로 수정됨을 확인할 수 있습니다
가끔 PATCH를 지원하지않는 서버가 있는데, 그럴 땐 POST 메소드를 활용합니다
오늘은 이렇게 HTTP Request에 대해 공부해봤습니다.
기타 메소드로 HEAD, OPTIONS, CONNECT, TRACE가 있다고 하는데 이 부분은 나중에 필요할 때 공부해보기로 하겠습니다
감사합니다