HTTP(하이퍼텍스트 전송 프로토콜)에서 REST(Representational State Transfer)는 자원을 표현하고 상태를 전송하기 위한 아키텍처 스타일입니다.
REST는 웹 서비스에서 클라이언트와 서버 간의 통신을 위한 규칙과 제약을 제공합니다.
GET과 POST는 HTTP 메서드 중 두 가지 유형입니다. 이들 메서드는 클라이언트가 서버로 요청을 보낼 때 사용됩니다.
각각의 역할과 주요 차이점은 다음과 같습니다.
1. GET 메서드
- 정보를 요청하기 위해 사용됩니다.
- 서버로부터 데이터를 검색하기 위해 사용됩니다.
- 요청된 데이터는 URL의 일부인 쿼리 매개변수 또는 경로 매개변수로 전달될 수 있습니다.
- GET 요청은 주로 캐싱 가능하며, 동일한 요청을 여러 번 보낼 때 동일한 응답을 받을 수 있습니다.
- GET 요청은 브라우저에서 주소 표시줄에 직접 입력하여 웹 페이지를 로드하거나 하이퍼링크를 통해 클릭하여 다른 페이지로 이동하는 경우에 사용됩니다.
GET method는 클라이언트에서 서버로 어떠한 리소스로 부터 정보를 요청하기 위해 사용되는 메서드입니다.
좀 더 쉽게 말하자면, 데이터를 읽거나(Read), 검색(Retrieve)할 때에 사용되는 method라고 할 수 있겠네요.
GET은 요청을 전송할 때 URL 주소 끝에 파라미터로 포함되어 전송되며, 이 부분을 쿼리 스트링(QueryString) 이라고 부릅니다.
e.g.) www.example-url.com/resources?name1=aaa&name2=bbb
위 예는 앞서 말한 쿼리스트링을 포함한 URL입니다. 파라미터인 name1과 name2를 통해 값을 전달받을 수 있습니다.
만약, 요청 파라미터가 여러 개이면 &로 연결합니다.
그리고 GET 요청은 오로지 데이터를 읽을 때만 사용되고 수정할 때는 사용하지 않습니다.
따라서 이런 이유로 사용하면 안전하다고 간주되죠. 즉, 데이터의 변형의 위험없이 사용할 수 있다는 뜻입니다.
GET 요청에 대한 기타 참고 사항
- GET은 불필요한 요청을 제한하기 위해 요청이 캐시될 수 있습니다.
- 파라미터에 내용이 노출되기 때문에 민감한 데이터를 다룰 때 GET 요청을 사용해서는 안 됩니다.
- GET 요청은 브라우저 기록에 남습니다.
- GET 요청을 북마크에 추가할 수 있습니다.
- GET 요청에는 데이터 길이에 대한 제한이 있습니다.
- Get 요청은 성공시, 200(Ok) HTTP 응답 코드를 XML, JSON뿐만 아니라 여러 데이터(html, txt등..), 여러 형식의 데이터와 함께 반환합니다.
- GET 요청은 idempotent합니다.
- idempotent는 멱등법칙(冪等法則) 또는 멱등성(冪等性)이란 뜻으로, 수학이나 전산학에서 연산의 한 성질을 나타내는 것으로, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다.
출처 : 위키백과
- idempotent는 멱등법칙(冪等法則) 또는 멱등성(冪等性)이란 뜻으로, 수학이나 전산학에서 연산의 한 성질을 나타내는 것으로, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다.
2. POST 메서드
- 리소스를 생성하거나 변경하기 위해 사용됩니다.
- 서버로 데이터를 제출하기 위해 사용됩니다.
- POST 요청은 데이터를 요청 본문(payload)에 포함하여 전송합니다.
- POST 요청은 클라이언트에서 서버로 데이터를 안전하게 전송할 때 사용됩니다.
- POST 요청은 요청마다 새로운 상태를 생성하거나 기존 상태를 변경할 수 있습니다.
- 예를 들어, 사용자가 로그인 정보를 입력하고 제출하는 경우 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하지 않습니다.
3. Get과 Post의 차이점
위 사진은 Get과 Post의 리소스 전달 방식의 차이를 표현한 사진입니다.
GET | POST | |
캐시 | ⭕️ | ❌ |
브라우저 기록 | ⭕️ | ❌ |
북마크 추가 | ⭕️ | ❌ |
데이터 길이 제한 | ⭕️ | ❌ |
HTTP 응답 코드 | 200(Ok) | 201(Created) |
언제 주로 사용하는가? | 리소스 요청 | 리소스 생성 |
리소스 전달 방식 | 쿼리스트링 | HTTP Body |
idempotent | ⭕️ | ❌ |
요약하면, GET은 정보를 요청하고 서버로부터 데이터를 검색하는 데 사용되며, POST는 리소스를 생성하거나 변경하기 위해 데이터를 서버에 제출하는 데 사용됩니다.
출처)
https://www.w3schools.com/tags/ref_httpmethods.asp
이 게시물의 내용 일부는 OpenAI의 ChatGPT 모델을 참고하여 작성되었습니다.
'컴퓨터공학 > 업무기본' 카테고리의 다른 글
HTTP 브라우저의 작동원리, REST API (4) | 2023.01.26 |
---|---|
웹 브라우저 작동 원리, 렌더링 과정 (0) | 2023.01.26 |
클린 아키텍처(Clean Architecture) (0) | 2021.05.30 |
댓글