전체 글에 해당하는 글 350

  1. GET and POST2020.06.07

GET and POST

IT/Web Programming|2020. 6. 7. 18:06

HTTP에서 GET과 POST 

 

HTTP는(HyperText Transfer Protocol)  웹상에서 클라이언트와 서버 간에 요청/응답으로 데이터를 주고 받을 수 있는 프로토콜입니다

 

GET POST

GET은 주소줄에 값이 ?뒤에 쌍으로 이어붙임
ex)  http://url/bbslist.html?id=5&pagenum=2
<?가 중요해 >


GET은 → URL 뒤에 물음표를 붙여 변수를 전달하고 (ex: google.com?q=북극곰)

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

 

GET과 POST의 차이 :: Outsider's Dev Story

다들 아시다시피 GET과 POST는 HTTP프로토콜을 이용해서 서버에 무언가를 전달할 때 사용하는 방식입니다. 웹개발자라면 당연히 알고 있어야 하는 사항이고 이걸 모르면 웹개발자체를 할 수가 없��

blog.outsider.ne.kr

https://hongsii.github.io/2017/08/02/what-is-the-difference-get-and-post/

반응형

댓글()