프로토콜 protocol
서로간의 통신을 위한 약속, 규칙
주고 받을 데이터에 대한 형식을 정의
HTTP(Hyper Text Transfer Protocol)
텍스트 기반의 프로토콜, 단순하고 읽기 쉬움(html)
상태를 유지하지 않음 - 클라이언트 정보 저장 X
요청이 같은 클라이언트한테 와도, 같은 클라이언트인지 알 수 없음
쿠키,세션이 있으면 구별 가능
확장 가능 - 커스텀 헤더 추가 가능
HTTP 응답 메시지
HTTP/1.1 200 OK //상태라인, 200은 상태코드
헤더
N줄, 엔터로 구분
------------<-중간에 빈 줄로 구분
바디
응답내용
상태코드
1XX INFORMATIONAL (정보교환)
2XX SUCSESS (성공)
3XX REDIRE (다른 URL로 요청)
4XX CLIENT ERROR (클라이언트가 잘못함, 404 NOT FOUND)
5XX SERVER ERROR (서버 에러)
HTTP 요청메시지, GET과 POST
요청라인
헤더
---빈줄
바디
GET- 서버에게 리소스를 가져오기(읽기)
바디가 없고 헤더만 있음
요청라인에 쿼리스트링으로 데이터 보낼 순 있음(소용량)
URL에 데이터 노출되어 보안 취약
데이터 공유에 유리
EX) 검색 엔진에서 검색 단어 전송
POST - 서버에 데이터 올리기(쓰기)
전송 크기 데이터에 제한 없음(대용량)
서버에 전송할 데이터를 바디에 담고 있음
보안 유리, 데이터 공유는 불리
(HTTP에 TLS 같이 써야됨 그래야 보안OK
HTTPS -> 암호화)
EX) 게시판 글쓰기, 로그인, 회원가입
POSTMAN 확장 프로그램으로
GET, POST 다른 방식으로 요청 가능
기록도 남아서 테스트할때 편리
텍스트파일 vs 바이너리파일
텍스트 (문자만 저장)
메모장에서 읽을 수 있음
문자는 문자, 숫자는 문자로 변환
그래서 읽을 때는 문자로 읽음
바이너리 (문자+숫자)
문자는 문자, 숫자는 숫자로 읽음
메모장에서 읽기 힘듬
MIME(EMAIL...)
텍스트 기반 프로토콜에 바이너리 데이터를 전송하기 위해 고안
HTTP의 CONTENT-TYPE 헤더에 사용, 데이터 타입 명시
response.setContentType("text/html") <-타입 명시
request.getRequestURI(); <-request 객체의 uri 얻을 수 있음 (자주 쓰임)
Base64 - 64진법
바이너리 데이터를 텍스트로 변환할 때 사용
0~9, A~Z, a~z, +, / <-모두 64개
2진수를 6비트씩 잘라서 변환한 거임
'개발공부 개발새발 > Spring' 카테고리의 다른 글
Spring, Boot) maven 버전 선택 꿀팁 (0) | 2022.11.24 |
---|---|
Spring) PasswordEncoder를 사용하기 위한 준비 (0) | 2022.11.16 |
Spring) JSON, Ajax, REST API (0) | 2022.11.11 |
Spring) 서블릿, JSP ( 저장소 ) (0) | 2022.10.25 |
Spring mvc) 요청과 응답 (0) | 2022.10.22 |