-
[몰입형] HTTP Method몰입형 2022. 9. 3. 17:05
서버와 클라이언트가 소통을 하기 위해서는 보통 HTTP를 이용하게 된다. 클라이언트가 서버로 요청을 보내는 HTTP Method에는 총 8가지가 존재한다.
- GET: 서버로 부터 데이터를 취득
- POST: 서버에 데이터를 추가, 작성 등
- PUT: 서버의 데이터를 갱신, 작성 등
- DELETE: 서버의 데이터를 삭제
- HEAD: 서버 리소스의 헤더(메타 데이터의 취득)
- OPTIONS: 리소스가 지원하고 있는 메소드의 취득
- PATCH: 리소스의 일부분을 수정
- CONNECT: 프록시 동작의 터널 접속을 변경
이 중 대표적인 GET, POST, PUT, DELETE에 대해서 알아보고자 한다.
GET Method
GET Method는 클라이언트에서 서버로 어떠한 리소스로 부터 정보를 요청하기 위해 사용된다.
GET의 특징으로는 대표적으로 URL에 Parameter를 붙여서 전송하여, URL뒤에 ? 를 사용하여 Parameter를 작성하고 & 을 붙여 여러개의 Parameter를 구분한다.
GET Method의 경우에는 브라우저마다 글자 수 제한이 있기 때문에 게시판의 게시물, 목록 조회와 같은 간단한 데이터 요청할 때 적합하며, 캐싱이 가능하므로 속도가 빠르다. 하지만 쿼리 스트링으로 데이터를 표현하기 때문에 실제 사이트에서 ID와 PW와 같은 중요한 정보들을 GET 방식을 이용하면 보안에 문제가 생기게 된다. 또한 URL에 데이터를 실어 보내기 때문에 대용량 데이터 전송을 하기에 제한 사항이 있다.
Post Method
POST Method는 주로 리소스를 생성 위해 서버에 데이터를 보내는 데 사용된다.
GET Method와 다르게 데이터들이 URL에 표시되지 않고 HTTP 패킷 Body에 담겨 서버로 데이터가 전송된다. 따라서 보내는 데이터의 양에 제한이 없어 대용량 데이터를 전송할 때는 POST 방식이 적합하다. 또한 URL에 데이터가 표시 되지 않기 때문에 GET 보다는 상대적으로 보안적이지만, body의 데이터도 결국엔 크롬 개발자 도구, Fiddler와 같은 툴로 요청 내용을 확인할 수 있기 때문에 꼭 암호화를 해줘야 한다. POST 방식의 경우 보통 서버의 값이나 상태를 변경하기 위해 사용되므로 글쓰기, 글 수정과 같은 작업에 적합하다.
GET Method와 POST Method의 차이
1. GET - idempotent, POST - non-idempotent
GET메소드를 사용해서는 여러번 적용하더라도 결과 값이 바뀌지 않는것을 개발하고 POST 메소드를 사용해서는 결과값이 바뀌는 유형의 개발이 적합하다.
2. 데이터 전송 방식
GET - URL 주소 끝에 파라미터로 포함되어 전송
POST - HTTP 메세지의 Body에 담아서 전송
3. 데이터의 길이 제한
GET - O, POST - X
4. 주로 사용하는 경우
GET - 리소스 요청, POST - 리소스 생성
PUT Method
PUT Method는 주로 리소스를 생성/업데이트하기 위해 서버에 데이터를 보내는 데 사용된다.
PUT 요청은 idempotent하며, 동일한 PUT 요청을 여러 번 호출하면 항상 동일한 결과가 생성된다.
데이터를 수정하는 것이기 때문에 요청시에 Body 값과 Content-Type 값을 작성해야한다.
POST와 PUT은 구분해서 사용해야한다. POST는 새로운 데이터를 계속 생성하기 때문에 요청시마다 데이터를 생성하지만, PUT은 사용자가 데이터를 지정하고 수정하는 것이기 때문에 같은 요청을 계속하더라도 데이터가 계속 생성되지는 않는다.
DELETE Method
DELETE 방식은 주로 리소스를 삭제하기 위해 서버에 데이터를 보내는 데 사용된다.
데이터를 삭제하는 것이기 때문에 요청시에 Body 값과 Content-Type 값이 비워져있다. URL을 통해서 어떠한 데이터를 삭제할지 파라메터를 받는다. 데이터 삭제에 성공한다면 Body 값 없이 성공 응답만 보내게 된다.
728x90'몰입형' 카테고리의 다른 글
[몰입형] Multicast (0) 2022.09.06 [몰입형] 쿠키와 세션 (0) 2022.09.03 [몰입형] 절대경로와 상대경로 (0) 2022.09.03 [몰입형] OSI 7계층 (0) 2022.09.03 [몰입형] Unicast(유니캐스트) (0) 2022.09.03