HTTP는 웹브라우저와 웹 서버가 인터넷상에서 데이터를 주고받기 위해 사용되는 통신 규칙이다.
HTTP Method는 클라이언트가 서버에 요청의 목적과 수행하길 원하는 동작을 알리는 표준화된 방법이다.
주요 메서드로는 GET, POST, PATCH, PUT, DELETE가 있다.
리소스를 조회할 때 사용하는 메서드이다.
전송할 데이터를 URL 끝에 쿼리 스트링 형태로 붙여 보낸다.
캐싱이 가능하여 가져온 데이터를 브라우저에 임시로 저장할 수 있다.
멱등성을 지니고 있어 여러 번 조회 해도 데이터는 동일하다.
주로 새로운 리소스를 생성할 때 사용하는 메서드이다.
상태를 변경하기 때문에 안전하지 않다.
멱등성이 없어서 같은 요청을 두 번 보낸다면 리소스가 두 개 생성될 수 있다.
리소스 전체를 수정할 때 사용하는 메서드이다. 덮어쓰기라고 생각하면 편하다.
요청할 때 전체 필드를 보내야 한다.
리소스 수정을 할 때 사용하는 메서드이다. PUT과 달리 부분 수정이 가능하여 변경하고 싶은 필드만 보내면 된다.
리소스를 삭제할 때 사용하는 메서드이다.
HTTP 상태 코드는 클라이언트가 보낸 HTTP 요청이 성공했는지 실패했는지를 서버에서 알려주는 숫자 코드이다.
HTTP 상태 코드는 3자리 숫자로 100번대~500번대로 존재한다. 각 상태 코드의 첫 번째 자리는 최상위 코드가 되어 다음과 같이 5개의 그룹으로 나뉜다.
요청이 수신되어 처리중 이라는 뜻이다.
요청이 정상적으로 처리되었다는 뜻이다. 단순히 요청에 대한 성공을 나타내지만 클라이언트가 어떤 행위에 대한 성공인지를 나타내기 때문에 응답을 받은 후 클라이언트가 취할 행위를 결정하는데 중요하기도 하다.
요청을 완료하기 위해 추가 행동이 필요하다는 뜻이다.
Redirection은 클라이언트가 요청한 URL에 대해 다른 URL을 다시 지시하여 다른 주소로 이동할 수 있게 해주는 기술이다.
잘못된 문법 등으로 서버가 요청을 수행할 수 없다는 뜻이다.
클라이언트 오류를 의미하며 서버 요청을 수행할 수 없는 원인이 클라이언트에 있음을 알려준다.
서버가 정상 요청을 처리하지 못했다는 뜻이다.
HTTP 무상태성은 서버가 클라이언트의 이전 요청 상태를 저장하지 않는 특징이다.
이렇게 되면 서버는 각 클라이언트의 상태를 유지할 필요가 없기 때문에 각 요청을 개별적으로 처리할 수 있게 된다. 따라서 서버는 더 많은 요청을 처리할 수 있게 되고, 확장성을 높일 수 있다.
하지만 로그인이 필요한 서비스에서는 무상태성으로 인해 매 요청마다 사용자 인증을 해야하는 경우가 생길텐데, 그렇다면 로그인은 어떻게 할까?
바로 쿠키와 세션, 토큰(JWT)을 이용하는 것이다. 이건 다른 게시글에서 다시 소개하겠다.
HTTP 비연결성은 요청과 응답을 주고받은 후 연결을 유지하지 않는 특징이다.
이렇게 되면 서버 자원이 절약되어 더 많은 사용자를 처리하기 쉬워지고 서버 확장이 쉬워진다. 만약 연결을 계속 유지한다면 서버는 각각의 연결을 관리하게 되어 서버 자원이 지속적으로 사용된다. 때문에 많은 클라이언트가 동시에 접속하면 서버가 과부하가 될 수 있다.
매번 연결을 새로 만들어야 하기 때문에 네트워크 지연 발생하는걸 피할 수 없는 한계점이 존재하지만 이를 지속연결로 해결할 수 있다.
persistent connection은 HTTP/1.1에서부터 도입된 keep alive 기능을 사용하면 일정 시간 동안 연결을 유지하게 해 주어 상황에 맞게 효율성을 극대화 하여 사용 가능하다.
영어에서 일반적인 명사가 복수명사라면 단어 뒤에 -s를 붙여서 나타낸다. 그렇다면 HTTPS도 HTTP가 여러 개일 때 표현하는 것일까?
HTTP는 데이터를 암호화하지 않고 일반 텍스트로 전송하여 보안에 취약한 반면, HTTPS는 TLS(SSL) 인증서를 통해 데이터를 암호화하여 안전하게 전송하는 프로토콜이다.