728x90
0. 웹 통신
1) 웹 통신 & Protocol
- 인터넷 상에서의 통신을 말함
- 많은 정보들이 주고 받기에 인터넷에 엄격한 규약이 존재함. 이것을 Protocol 이라 말함
2) 웹 Protocol 종류
- 일반적인 프로토콜
Http: Hyper Text Transer Protocol
Https: secure Hyper Text Transer Protocol
- TCP/IP 프로토콜을 가지고 서버와 클라이언트 사이의 파일 전송을 하기 위한 프로토콜
FTP: File Transfer Protocol
- 파일 전송 프로토콜
Talnet : Terminal Network
SSH: Secure Shell
- 보안된 소켓 통신을 위한 프로토콜
SMTP: Simple Mail Transfer Protocol
- 기타
TCP/UDP : Transmission Control Protocol/ User Datagram Protocol
IP : Internet Protocol
1. Http 프로토콜
1) Hyper Text Transfer Protocol
- Hyper Text를 전송하기 위한 프로토콜
- Hyper Text란, 웹 문서를 구성하고 있는 언어, 즉 HTML을 말한다.
2) HTML
- Hyper Text Markup Language
- Hyper Text: text를 넘어서 링크, 이미지 등 다양한 것들을 표현할 수 있는 것.
- HTML: 웹 문서의 뼈대를 구성하는 언어, 브라우저를 통해서 웹문서를 읽어올 수 있다.
3) Http 통신 - Requst & Response
- 요청 Request, 응답 Response로 이루어짐
- 클라이언트가 서버에게 요청을 보냄
- 서버는 클라이언트에 요청에 대한 응답을 보냄
- 클라이언트 사용자에게 응답 받은 결과를 보여줌
그림으로 설명한 웹 브라우저 client와 server의 응답 방식
- request / response 의 구조
4) Http 통신 - stateless
- Http 통신은 state 개념이 존재하지 않음
- 통신을 주고 받아도 클라이언트와 서버는 연결되 있지 않고 각각 통신은 독립적이다.
- 상태를 저장하지 않는다는 뜻( 서로 요청하는 것들을 기억하지 못한다.)
- 로그인 같은 경우에 세션 / 저장소 같은 방식을 이용해 기억하는 것 처럼 보이게 함.
5) Http 패킷
- Http 통신에 요청을 보내고 응답을 받을때에 그 정보들은 패킷(Packet)에 넣어 보낸다.
- 패킷 구조 : Header / Body
- Header: 보내는 사람의 구조, 받는 사람의 주소, 패킷 생명시간
- Body: 실제 전달하고자 하는 내용
- 요청과 응답에 담겨 있는 정보
- General: 요청 url 정보와 메소드, 상태 코드를 확인할 수 있다.
- Response Heaers: 응답 헤더, 응답 온 패킷의 헤더를 확인할 수 있다. 서버의 종류, 연결 상태 등 이 담겨있다.
- Request Headers : 요청 헤더. 요청을 보낸 패킷의 헤더를 확인할 수 있다. 보낸 클라이언트의 종류, 요청한 파일의 종류를 알수 있다.
6) Http Request 구조
1) Start Line(요청내용) :
- Http 메소드 :
- Requst target : 요청한 의도를 담고있다(GET,POST,DELETE,UPDATE)
- Http ver : HTTP 버전에 따라 요청 메세지 구조나 데이터가 다를 수 있기 때문에 버전을 명시함
2) Header : HTTP 요청이 전송되는 목표 주소
3) Body
7) Http Request 구조 - Http 메소드
- GET : GET [request-url]?query-string
GET 요청 방식은 URl(URL)이 가진 정보를 검색하기 위해 서버 측에 요청하는 방식이 GET 방식이다.
전송방식:
GET [request-url]?query_string
Host:[Hostname] 혹은 [IP] \r\n
- POST:
POST 요청 방식은 요청 URl(URL)에 폼 입력을 처리하기 위해 구성한 서버 측 스크립트(ASP,PHP,JSP 등) 혹은 GGI 프로그
램으로 구성되고 Form Action과 함께 전송되는데, 이때 헤더 정보를 포함하지 않고 데이터 부분에 요청 정보가 들어간다.
전송방식 :
POST [request-uri]?query_string
HOST:[Hostname] 혹은 [IP] \r\n
Content-Lenght:[Lenght in Bytes] \r\n
[query-string] 혹은 [데이터]
- PUT:
POST와 유사한 전송 구조를 가지기 때문에 헤더 이외에 메시지(데이터) 가 함께 전송된다.
전송방식 :
PUT [request-uri] HTTP/1.1\r\n
Host:[Hostname] 혹은 [IP] \r\n
Content-Lenght:[Length in Bytes] \r\n
Content-Type:[Content Type] \r\n
[데이터]
- DELETE: 원격지 웹 서버에 파일을 삭제하기 위해 사용되며 PUT과는 반대 개념의 메소드
전송방식:
DELETE[request-url]
Host:[Hostname] 혹은 [IP] \r\n
8) Http Response의 구조 - 응답 코드 종류
2. REST API
- REST(REpresentational State Transfer)
- 웹에 장점을 최대한 활용할 수 있는 아키텍쳐
1) REST에 4개의 속성
속성1
- 서버에 있는 모든 resource는 각 resource 당 클라이언트가 바로 접근 할 수 있는 고유 URL이 존재한다.
속성2
- 모든 요청은 클라이언트가 요청할 때 필요한 정보를 주기 때문에 서버에서 세션정보를 보관할 필요가 없다. 그렇기 때문에 서비스에 자유도가 높아지고 유연한 아키텍쳐 적응이 가능하다.
속성3
- HTTP 메소드를 사용한다.
- 모든 resource는 일반적으로 http 인터페이스인 GET,POST,PUT,DELETE 4개의 메소드로 접근 되어야한다는 뜻
속성4
- 서비스 내에 하나의 Resource 가 주변에 연관 된 리소스들과 연결되어 표현되어야 한다.
2) REST의 3가지 구서
- 자원(resource), method, message
Resource
- REST에서는 자원에 접근 할때 URl(Uniform Resource Identifier)로 접근한다.
- Resource: 자원은 저장된 데이터(DBMS)는 물론, 이미지/동영상/문서(pdf 등)와 같은 파일, 서비스 (이메일 전송, 푸쉬 메시지 등)을 모두 포함
HTTP 메소드 : POST / GET / PUT / DELETE
- POST : POST를 통해 해당 URl을 요청하면 리소스를 생성한다.
- GET: GET을 통해 해당 리소스를 조회, 리소스를 조회하고 문서에 대한 자세한 정보를 가지고 온다. 예) 영화 리스트 정보 배우정보
- PUT: PUT을 통해 해당 리소스를 수정한다.
- DELETE: DELETE를 통해 해당 리소스를 삭제한다.
메시지
- 메시지는 HTTP header와 body, 응답상태 코드로 구성되어 있으며 header와 body에 포함된 메시지는 메시지를 처리하기 위한 충분한 정보를 포함한다.
* GET과 POST만 주로 쓰지만, 실제로는 요청을 보낼때, PUT, PATCH, DELETE등 더 자세한 동작을 정의 할 수 있따. 보통 PUT은 전체 수정(대체), PATCH는 부분 수정, DELETE는 제거시 요청할때 사용한다. 주소를 자원이라 판단하고,메서드를 동사라고 보는 개발 방식이 바로 REST 이다.
'웹개념' 카테고리의 다른 글
[Server] Cache(캐시)란? (0) | 2021.10.09 |
---|---|
SSR과 CSR (0) | 2021.10.09 |
[GraphQL] GraphQL과 REST API의 차이점 (0) | 2021.10.09 |