HTTP (Hypertext Transfer Protocol)는 클라이언트-서버 간 통신을 가능하게 하도록 설계되었다.
HTTP는 클라이언트와 서버 간의 요청-응답 프로토콜로 작동한다.
예: 클라이언트(브라우저)가 서버에 HTTP 요청을 보낸다. 그런 다음 서버는 클라이언트에 응답을 반환한다. 응답에는 요청에 대한 상태 정보가 포함되며 요청된 콘텐츠도 포함될 수 있다.
HTTP 메소드
GET
POST
PUT
HEAD
DELETE
PATCH
OPTIONS
CONNECT
TRACE
가장 일반적인 메소드는 GET, POST이다.
GET
GET은 지정된 리소스에서 데이터를 요청하는 데 사용된다.
쿼리 문자열(이름/값 쌍)은 GET 요청의 URL로 전송된다.
/test/demo_form.php?name1=value1&name2=value2
GET 요청에 대한 몇가지 참고 사항
GET 요청을 캐시 할 수 있다.
GET 요청은 브라우저 기록에 남아 있습니다.
GET 요청을 북마크에 추가할 수 있다.
민감한 데이터를 처리할 때 GET 요청을 사용해선 안된다.
GET 요청에는 길이 제한이 있다.
GET 요청은 데이터 요청에만 사용된다.(수정불가)
POST
POST는 리소스를 생성/업데이트하기 위해 서버에 데이터를 보내는 데 사용된다.
POST를 통해 서버로 전송된 데이터는 HTTP 요청의 요청 본문에 저장된다.
POST /test/demo_form.php HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2
POST 요청에 대한 몇 가지 참고 사항:
POST 요청은 캐시되지 않는다.
POST 요청은 브라우저 기록에 남아 있지 않는다.
POST 요청을 북마크할 수 없다.
POST 요청에는 데이터 길이에 대한 제한이 없다.
PUT
PUT은 리소스를 생성 / 업데이트하기 위해 서버에 데이터를 보내는 데 사용된다.
POST와 PUT의 차이점은 PUT 요청이 멱등적이라는 것이다. 즉 동일한 PUT을 여러번 호출하면 항상 동일한 결과가 생성된다. 반대로 POST 요청을 반복적으로 호출하면 동일한 리소스를 여러번 생성하는 부작용이 있다.
HEAD
HEAD는 GET과 거의 동일하지만 응답 본문이 없다.
즉, GET/users가 사용자 목록을 반환하면 HEAD/users는 동일한 요청을 하지만 사용자 목록은 반환하지 않는다.
HEAD 요청은 큰 파일이나 응답 본문을 다운로드하기 전과 같이 실제로 GET요청을 하기 전에 GET 요청이 반환할 내용을 확인하는 데 유용.
DELETE : 지정된 자원을 삭제한다.
PATCH : 리소스에 부분 수정 적용
OPTIONS: OPTIONS는 대상 리소스에 대한 통신 옵선을 설명한다.
CONNECT: 요청된 리소스와 양방향 통신을 시작하는 데 사용된다.
TRACE: 대상 리소스의 경로를 테스트하는 메시지 루프백 테스트를 수행하는데 사용.(디버깅 목적에 유용)
CONNECT
요청한 리소스에 대해 양방향 연결을 시작하는 메소드다. 예를 들어, SSL(HTTPS)를 사용하는 웹사이트에 접속하는데 사용 될 수 있다.
OPTIONS
목표 리소스와의 통신 옵션을 설명하기 위해 사용.
curl을 이용해 OPTIONS 요청을 서버에 보내서 서버에서 지원하는 method를 확인한다.
요청하면 응답에 Allow 헤더 포함되어 온다. 이를 통해 허용되는 메소드 확인 가능.
PATCH
리소스의 부분적 수정시 사용됨. PUT은 완전한 교체만 허용
TRACE
목표 리소스에 따라 메시지 루프백 테스트 수행해 유용한 디버깅 메커니즘을 제공한다.
HTTP 응답 상태 코드
200 ~ : 성공
300 ~ : 리다이렉트
400: Bad request
403: Forbidden
404: Not Found
405: Method Not Allowed
500: internal server error
References
https://www.w3schools.com/tags/ref_httpmethods.asp
'Sparta x 이노베이션 캠프 > Computer Science' 카테고리의 다른 글
TIL: 프로그래밍, 컴파일러와 인터프리터 (0) | 2022.10.19 |
---|---|
TIL: 브라우저의 렌더링 원리 (0) | 2022.09.19 |
TIL) React : DOM, 서버리스 (0) | 2022.08.28 |