리퀘스트 메소드 종류와 특징
GET 메소드
- 클라이언트가 서버에 있는 데이터를 요청할 때 사용한다.
- url기반으로 데이터를 요구하는 방법이다.
- (사용 방법) (쿼리 스트링 방식) URL 끝에 ? 를 붙이고 그 다음에, 요청 정보를 쿼리 스트링 방식으로 작성해서 보낸다.
쿼리 스트링 방식이란, URL ? 뒤에 Key = value 형식으로 원하는 정보를 서버에게 요청하는 방식이다. 여러 개의 정보를 요청할 때는 &를 붙여서 사용한다.
ex) https://comic.naver.com/webtoon/detail**?titleId=796218&no=24&weekday=sat**
→ 네이버 웹툰 서버에 titleld은 796218&no=24와 weekday는 sat인 데이터를 요청한다.
- 쿼리 스트링 방식(URL + 파라미터) 은 255자 제한이 있기 때문에 대용량 데이터를 전송하기 어렵다.
- 요청 정보를 사용자가 확인 할 수 있지만, POST방식보다 보안이 취약하다.
- 리퀘스트 메세지 바디는 비워져서 전송한다.
- GET 메소드로 한번 요청된 정보는 브라우저에서 캐시 해두고, 동일한 요청이 발생 할 때, 캐시된 데이터를 사용한다.
→ 캐싱 방식으로 더 빠른 통신이 가능하다.
POST 메소드
- 클라이언트가 서버에 있는 데이터를 생성을 요청할 때 사용한다.
- 클라이언트가 보내는 데이터는 message body에 숨겨져서 보내진다. 헤더 Content-Type에 보내는 데이터 타입을 표시해서 같이 보낸다.
- GET 방식보다, 보안이 강하고, 대용량 데이터 전송하기 좋다.
- GET 방식과 달리 캐싱을 사용할 수 없다.
PUT 메소드
- 클라이언트가 서버에 있는 데이터 생성과 수정을 요청할 때 사용한다.
- message body에 수정하고 싶은 데이터를 넣어서 보낸다.
+POST와 PUT의 차이
POST 메소드는 데이터를 생성할 때 사용한다. POST를 할 때마다 서버에서는 새로운 리소스를 생성한다.
PUT 메소드는 데이터를 새로 생성하기도 하지만, 업데이트할 때 많이 사용된다. PUT 메소드와 식별자가 있는 데이터를 함께 보내면, 서버는 식별자와 일치하는 데이터를 수정하게 된다. PUT 메소드는 요청 시 마다 같은 식별자가 일치하는 리소스를 반환한다.
+PATCH 메소드는 요청을 보낼 때 수정하는 일부분만 보내면 되고 일부분의 교체를 의미한다.
예를 들어 '{"a" : 1, "b" : 2}'가 있을 때 b를 3으로 바꾼다고 했을 때 'patch'는 '{"b" : 3}' 이런 식으로 부분적으로 보내어 데이터를 수정한다.
DELETE 메소드
- 클라이언트가 서버에 있는 특정 데이터를 삭제를 요청할 때 사용한다.
- URL을 통해서 삭제하고 싶은 데이터를 서버에게 알린다. 그래서 message body는 비워져 있다.
HTTP 상태 코드.
상태 코드란, 클라이언트 요청에 대한 서버의 응답 결과를 정해진 코드로 나타낸 것이다.
자주 사용 되는 상태 코드를 알아보자.
1XX : Information responses
100번대 상태 코드는 리퀘스트를 받아들여서 현재 처리 중임을 알려준다.
- 100 Continue
리퀘스트처리가 진행 중임을 알린다.
2XX : Successful responses
200번대 상태 코드는 요청이 성공 되었음을 알려준다.
- 200 OK
요청이 성공적 처리되었음을 알린다. 리퀘스트 메소드 종류에 따라, 정보가 메세지 바디에 들어있을 수도 있고, 없을 수도 있다.
주로 GET요청에 따른 응답으로 사용된다.
- 201 Created
요청이 성공적으로 처리되어, 서버에서 새로운 리소스를 생성했음을 알린다.
PUT과 POST 요청에 따른 응답으로 많이 사용된다.
- 204 No Content
요청은 성공적으로 처리 되었지만, 응답할 데이터가 없을 때 사용한다.
예를 들어, DELETE 요청으로 서버에 데이터가 삭제되었지만, 제공해줄 데이터가 없을 때 204 상태코드를 사용한다.
- 206 Partial Content
범위가 지정된 GET메소드를 요청 받았을 때, 지정된 범위의 데이터만 보냈음을 알릴 때 사용한다.
3XX : Redirection messages
300번대 상태 코드는 요청이 완료 되기 위해선 추가 동작이 필요함을 알린다.
- 301 Moved Permanently
요청한 리소스의 URI가 영구적으로 변경되었음을 알린다. 리스폰스 헤더 Location에 변경된 URI를 넣어서 수정된 주소를 알려준다. 브라우저는 이 정보를 받고, 수정된 주소로 재 접속을 한다.
- 302 Found
301번과 같이 URI 변경되었음을 알린다. 하지만 302는 일시적인 변경일 때 사용한다.
- 303 See Other
변경된 URI에 다시 접속해야 함을 알리며, 반드시 GET메소드를 사용해야 함을 알릴 때 사용한다.
- 304 Not modified
요청하는 데이터가 캐시되어 있는 경우를 알린다. 요청된 정보는 수정 사항 없는 캐시 데이터 이기 때문에, 304 메세지와 함께 빈 메세지 바디를 클라이언트에 전송한다.
4XX : Client error responses
400번대 상태 코드는 클라이언트의 요청이 유효하지 않음을 알린다.
- 400 Bad Request
지정된 방식이 아닌 잘못 된 방식으로 요청했을 때 사용한다.
예를 들어, 로그인 할 때 id만 입력해서 보내는 경우 해당 코드를 보낸다.
- 401 Unauthorized / 403 Forbidden
두 코드 모두 해당된 리소스에 대한 클라이언트 권한이 없음을 알린다.
401 - 인증이 부족한 경우이다. 로그인이 필요한 경우 사용한다.
403 - 권한이 부족한 경우이다. 로그인은 되었지만, 해당 페이지의 등급이 낮아 접속을 제한할 때 사용한다.
- 404 Not Found
클라이언트가 요청한 리소스를 찾을 수 없을 때 사용한다. URI를 잘못 입력하거나, 사라진 링크에 접속할 때 쉽게 만날 수 있는 상태코드이다.
5XX : Server error reponses
500번대 상태 코드는 클라이언트가 아닌 서버에 오류가 있을 때 사용한다.
- 500 Internal Server Error
서버가 처리 과정에서 오류가 있음을 알리는 포괄적으로 사용되는 상태코드이다.
- 502 Bad Gateway
게이트웨이 또는 프록시서버가 오류가 생겼음을 의미한다.
- 503 Service Unavailable
서버의 과부하 점검으로 인한 일시적인 서버 사용 불가함을 알릴 때 사용한다.
- 504 Gateway Timeout
게이트웨이 또는 프록시서버가 정해진 Timeout 시간동안 클라이언트의 요청을 처리하지 못함을 의미한다.
Reference
https://velog.io/@pear/Query-String-쿼리스트링이란
https://velog.io/@wonseok97/request-method-GET과-POST
https://girawhale.tistory.com/66
https://velog.io/@53_eddy_jo/RESTful한-세계에서의-POST와-PUT의-차이-거기에-FETCH까지
'Web Sever 개발과 CS 기초 > 네트워크 지식' 카테고리의 다른 글
URI와 URL 차이와 구조 (0) | 2022.12.19 |
---|---|
HTTP Client CP, DB외에 Connection Pool을 사용하는 곳 (0) | 2022.12.11 |
REST API, RESTFUL이란 (0) | 2022.09.18 |
HTTP 프로토콜 이해와 HTTP 버전 별 특징 (0) | 2022.08.14 |
OSI, TCP/IP 참조 모델 쉽게 이해하기 (0) | 2022.07.24 |