하이퍼 텍스트 전송 규약
링크에 따라 차례가 바뀌는 임의적이면서 나열형인 구조를 갖춘 텍스트
참고 : ko.wikipedia.org
3가지 특징
텍스트 기반의 프로토콜을 사용하기 때문이다.
HTTTP 메세지를 보면 사람이 알아보기 쉬운 텍스트로 작성되어있는데
하이퍼텍스트 프로토콜 규칙을 지켜야 하기 때문이다.
상태를 유지하지 않는다.
클라이언트의 정보를 저장하지 않음
같은 클라이언트에서 요청을 여러번 보내도 서버는 매번 다른 클라이언트의 요청으로 받아들인다.
이를 보안하기 위해 나온것이 쿠키
와 세션
이다.
쿠키와 세션을 이용하면 일정 시간동안 클라이언트의 정보를 기억할 수 있다.
커스텀 Header 추가 가능
기본 Header 정보에
서버와 클라이언트가 약속한 서비스에서 사용 될 추가적인 정보를
간단하게 Header에 추가할 수 있다.
응답 서버에 대한 설명 or 바디에 대한 설명
서버에 요청하는 HTTP 메서드 정보와 요청 경로
HTTP 버전 정보
서버 호스트 정보
Date 보낸 날짜, 보낸 시간
Content-type 바디에 작성된 내용의 유형
Content-Length 바디에 작성된 내용의 길이
등등
응답 본문
응답에 대한 내용
1 HTTP/1.1 200 OK
2 Content-Length: 649
3 Content-Type: application/x-www-form-urlencoded
4 Date: Fri, 05 May 2023 07:07:25 GMT
5
6 {"event":{"userId":"132132132132","id":"456465456654","channelId":"46546789","name":"PageView","property":{"country":"KR","os":"Windows NT ??","city":"서울시 강남구","session":23424234,"ip":"123.123.321.321","title":"제로베이스 - 누구나 취업하는 가장 합리적인 취업 스쿨","url":"https://zero-base.co.kr/me/courses/215195/notice","browser":"Chrome 112","page":"https://zero-base.co.kr/me/courses/215195/notice","device":"Desktop"},"createdAt":1683270445882,"expireAt":1691046445882,"version":1}}
HTTP/1.1 : HTTP 버전 정보
200 : 상태 코드
OK : 상태 코드에 대한 설명. 이부분은 작성하기 나름!
상태코드 정보
상태코드 | 의미 |
---|---|
1xx | 정보 |
2xx | 요청/응답 성공 |
3xx | Redirect. 다른 URL로 요청하라는 응답 |
4xx | Client 에러. Client에서 요청을 잘못해서 나타나는 에러 |
5xx | Server 에러. Server에서 요청을 처리하는 도중 에러가 나면 나타남 |
Method | 설명 |
---|---|
Post | C: Create, Write , 바디에 메세지를 담아서 서버에 메세지의 처리를 요청. |
Get | R: Read , 리소스를 가져오기 위한 요청. 바디 메세지가 없다. |
Put | U: Update , 전체 리소스의 변경을 서버에 요청 |
Petch | U: Update , 특정 리소스의 일부분에 대한 변경을 서버에 요청 |
Delete | D: Delete , 특정 리소스의 삭제를 요청. 서버는 이때 권한/인증 등등을 확인 후 처리 |
서버의 리소스를 가져오기 위한 설계
QueryParameter를 통해 데이터 전달 (소용량)
URL에 데이터를 넣어서 서버로 전달하기 때문에 보안에는 취약하다.
대신 데이터 공유에 유리함
사용되는 예: 게시판에서 페이징 이용시, 검색엔진에서 갬색 단어 전송시
서버에 데이터를 저장하기 위해 설계됨
전송 데이터의 크기에 제한이 없다 (대용량)
데이터를 요청 메세지의 Body에 담아서 전송한다.
HTTPS 프로토콜을 사용할 경우에 한하여 보안에 안전하다.
데이터 공유에는 불리하다.
사용되는 예: 로그인, 회원가입, 게시글 업로드
숫자를 문자로 변환(encoding) 후 쓴다.
0과 1의 이진 형식으로 인코딩된 파일. 참고
데이터를 있는 그대로 읽고 쓴다.
Multipurpose Internet Mail Extensions
전자우편은 7비트 ASCII 문자를 이용하여 전송되는데,
MIME은 초창기에 전자 우편에 사용하기 위한 인터넷 표준 포맷을 위해 만들어 졌다.
전자우편에 8비트 이상을 사용하는 문자나, 이미지와 같은 바이너리 데이터를 전송하기 위해 고안되었다.
↑ 출처: wikipedia
웹이 발전하면서 웹 페이지로 다양한 문자, 이미지 등등 멀티미디어 콘텐츠를 공유하기 위해
다양한 장점(확장성, 호환성, 표준화 등)을 가지고 있는 MIME 타입이 웹에 적용되었다.
HTTP의 Content-Type 헤더에 사용된다.
데이터의 타입 예시
타입 | 설명 | 대표 예시 [ 타입/서브타입 ] |
---|---|---|
text | 텍스트 파일 | text/plain, text/html, text/css, text/javascript |
image | 이미지 파일 | image/jpeg, image/gif, image/png, image/bmp , image/webp |
audio | 오디오 파일 | audio/mpeg, audio/wav, audio/midi, |
video | 비디오 파일 | video/webm, video/ogg |
application | 이진 데이터 | application/json . application/xml , application/pdf |
64진법 문자 체계.
바이너리 데이터(이미지 파일 등)을 텍스트 데이터로 변환할 때 사용한다.
알파벳 소문자
, 알파벳 대문자
, 숫자 0~9
, +
, /
로 총 64개의 문자로 구성됨.
이미지파일을 base64로 인코딩 또는 역으로 디코딩 해주는 사이트 : base64encode.org