GET and POST
HTTP에서 GET과 POST
HTTP는(HyperText Transfer Protocol) 웹상에서 클라이언트와 서버 간에 요청/응답으로 데이터를 주고 받을 수 있는 프로토콜입니다
GET | POST |
GET은 주소줄에 값이 ?뒤에 쌍으로 이어붙임 |
POST는 숨겨져서 (body에) 보내진다. form을 이용해서 submit을 하는 형태가 POST POST는 → 보이지 않는 body에 key:value 형태로 적어서 보내옵니다. |
GET은 URL에 이어붙기 때문에 길이제한이 있어서 많은양의 데이터는 보내기 어렵고 | POST는 많은 양의 보내기에도 적합하다. |
서버로부터 정보를 조회 하기위해 설계됨 | 리소스를 생성/변경하기 위해 설계 |
이렇게 나눠 봐도 잘 이해가안돼서 검색중 그나만 이해가가는 부분을 복사해왔다.
GET과 POST의 차이
GET은 Idempotent, POST는 Non-idempotent하게 설계되었습니다.
Idempotent(멱등)은 수학적 개념으로 다음과 같이 나타낼 수 있습니다.
수학이나 전산학에서 연산의 한 성질을 나타내는 것으로, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질
즉, 멱등이라는 것은 동일한 연산을 여러 번 수행하더라도 동일한 결과가 나타나야 합니다.
여기서 GET이 Idempotent하도록 설계되었다는 것은 GET으로 서버에게 동일한 요청을 여러 번 전송하더라도 동일한 응답이 돌아와야 한다는 것을 의미합니다. 이에 따라 GET은 설계원칙에 따라 서버의 데이터나 상태를 변경시키지 않아야 Idempotent하기 때문에 주로 조회를 할 때에 사용해야합니다. 예를 들어, 브라우저에서 웹페이지를 열어보거나 게시글을 읽는 등 조회를 하는 행위는 GET으로 요청하게 됩니다.
반대로 POST는 Non-idempotent하기 때문에 서버에게 동일한 요청을 여러 번 전송해도 응답은 항상 다를 수 있습니다. 이에 따라 POST는 서버의 상태나 데이터를 변경시킬 때 사용됩니다. 게시글을 쓰면 서버에 게시글이 저장이 되고, 게시글을 삭제하면 해당 데이터가 없어지는 등 POST로 요청을 하게 되면 서버의 무언가는 변경되도록 사용됩니다. 이처럼 POST는 생성, 수정, 삭제에 사용할 수 있지만, 생성에는 POST, 수정은 PUT 또는 PATCH, 삭제는 DELETE가 더 용도에 맞는 메소드라고 할 수 있습니다.
마지막으로 웹페이지를 조회할 때, 링크를 통해 특정 페이지로 바로 이동하려면 해당 링크와 관련된 정보가 필요한데 POST는 요청 데이터가 Body에 담겨 있기 때문에 링크 정보를 가져올 수 없습니다. 반면, GET은 URL에 요청 파라미터를 가지고 있기 때문에 링크를 걸 때, URL에 파라미터를 사용해 더 디테일하게 페이지를 링크할 수 있습니다.
GET과 POST는 이처럼 큰 차이가 있기 때문에 설계원칙에 따라 적절한 용도로 사용해야합니다.
< 이부분은 https://hongsii.github.io/2017/08/02/what-is-the-difference-get-and-post/ 여기서 가져왔슴니다>
Reference :
스파르타코딩 4주차
https://blog.outsider.ne.kr/312
https://hongsii.github.io/2017/08/02/what-is-the-difference-get-and-post/
'IT > Web Programming' 카테고리의 다른 글
[스파르타코딩온라인] 개인프로젝트 2 (0) | 2020.06.28 |
---|---|
[스파르타코딩 온라인] 프로젝트 1.1 차 기획안 (0) | 2020.06.19 |
[스파르타코딩 온라인] 프로젝트 1차 기획안 (0) | 2020.06.17 |
HTML , CSS , JavaScript , Python 주석처리방법 (2) | 2020.06.15 |
[스파르타코딩온라인] 4주차 (0) | 2020.06.15 |