TIL - CS

hoin_lee·2023년 5월 5일
0

TIL

목록 보기
181/236

Get과 Post의 차이

일단 쉽게 말하자면 Get은 가져온다는 개념이고 , Post는 수행한다는 개념이다 생각하면 쉽다.
즉,

  • Get은 서버에서 어떤 데이터를 가져와서 보여줄 때 , 어떤 값이나 내용, 상태등을 바꾸지 않는 경우에 사용하는 것
  • Post는 서버상의 데이터 값이나 상태를 바꾸기 위해서 사용한다.

Get

GETmethod는 클라이언트에서 서버로 어떠한 리소스로부터 정보를 요청하기 위해 사용되는 메서드이다.
좀 더 쉽게 말하자면, 데이터를 읽거나(Read) 검색(Retrieve)할 때에 사용되는 method라고 할 수 있다.
GET은 요청을 전송할 때 URL 주소 끝에 파라미터로 포함되어 전송되며, 이 부분을 쿼리 스트링(QueryString)이라고 부른다.

  • www.test.com/resources?name1=테스터&name2=테스터2
    • 위는 쿼리스트링을 포함한 URL이고 파라미터인 name1,name2를 통해 값을 전달받을 수 있다. 만약, 요청 파라미터가 여러개이면 &로 연결한다.

그리고 GET요청은 오로지 데이터를 읽을 때만 사용되고 수정할 때는 사용하지 않는다. 따라서 데이터 변형 없이 사용할 수 있기에 안전하다고 간주된다.

GET요청에 대한 참고사항

  • GET은 불필요한 요청을 제한하기 위해 요청이 캐시될 수 있다.
  • 파라미터에 내용이 노출되기 때문에 민감한 데이터를 다룰 때 GET요청을 사용해서는 안된다.
  • GET 요청은 브라우저 기록에 남는다
  • GET요청을 북마크에 추가할 수 있다.
  • GET요청에는 데이터 길이에 대한 제한이 있다.
  • GET요청은 성공시, 200(OK)HTTP 응답 코드를 XML,JSON뿐만 아니라 여러 데이터 (html,txt등...) 여러 형식의 데이터와 함께 반환한다.
  • GET요청은 idempotent한다

POST

POSTmethod는 리소스를 생성/업데이트 하기 위해 서버에 데이터를 보내는 데 사용된다.

GET과 달리 전송해야될 데이터를 HTTP메세지의 Body에 담아서 전송한다.
그리고 그 BODY의 타입은 요청 헤더의 Content-Type에 요청 데이터의 타입을 표시 따라 결정된다.
(POST로 요청을 보낼때는 해야한다)

HTTP메세지의 Body는 기리의 제한없이 데이터를 전송할 수 있따. 그래서 POST요청은 GET과 달리 대용량 데이터를 전송할 수 있다.
이처럼 POST는 데이터가 Body로 전송되고, 내용이 눈에 보이지 않아 GET보다 보안적인 면에서 안전하다고 생각할 수 있지만, POST요청도 크롬의 개발자 도구,Fiddler와 같은 툴로 요청 내용을 확인할 수 있기 때문에 민감한 데이터의 경우에는 반드시 암호화해 전송해야 한다.

POST 요청에 대한 기타 참고 사항

  • POST 요청은 캐시되지 않습니다.
  • POST 요청은 브라우저 기록에 남아 있지 않습니다.
  • POST 요청을 북마크에 추가할 수 없습니다.
  • POST 요청에는 데이터 길이에 대한 제한이 없습니다.
  • POST 요청 중 자원 생성은 201(Created) HTTP 응답 코드를 반환합니다.
  • POST 요청은 idempotent하지 않습니다.

GET과 POST의 차이점


GET과 POST의 리소스 전달 방식의 차이를 설명한 사진

idempotent

연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질 이란 뜻으로 즉, 동일한 연산을 여러 번 수행하더라도 동일한 결과가 나타나야 한다.
GET 은 idempotent, POST는 Non-idempotent하게 설계되었다.

여기서 GET이 idempotent하도록 설계 되었다는 것은 GET으로 서버에게 동일한 요청을 여러번 전송하더라도 동일한 응답이 돌아와야 한다는 것을 의미한다. 이에 따라 GET은 설계 원칙에 따라 서버의 데이터나 상태를 변경시키지 않아야 idempotent하기 때문에 주로 조회를 할 때 사용해야 한다.

예를 들어, 브라우저에서 웹페이지를 열어보거나 게시글을 읽는 등 조회를 하는 행위는 GET으로 요청하게 된다.

반대로 POST는 Non-impotent하기 때문에 서버에게 동일한 요청을 여러 번 전송해도 응답은 항상 다를 수 있다.
이에 따라 POST는 서버의 상태나 데이터를 변경시킬 때 사용한다.

게시글을 쓰면 서버에 게시글이 저장이 되고, 게시글을 삭제하면 해당데이터가 없어지는 등 POST로 요청을 하게 되면 서버의 무언가는 변경되도록 사용된다. 이처럼 POST는 생성, 수정, 삭제에 사용할 수 있지만, 생성에는 POST, 수정은PUT또는 PATCH, 삭제는 DELETE가 더 용도에 맞는 method이다.

Refrence

profile
https://mo-i-programmers.tistory.com/

0개의 댓글