HTTP란?
HTTP(Hyper Text Transfer Protocol)는 웹브라우저와 웹서버가 통신을 하기위한 통신 규칙이다. 굉장히 단순했던 HTTP는 웹의 발전으로 성능, 보안,안정성을 확보하는것이 어려워 졌다. 이러한 문제를 해결하기 위해 HTTP는 계속해서 발전해 왔다. 기존엔 메시지만 전송이 가능했었지만 이미지, 오디오, 동영상과 같은 멀티미디어 파일을 전송할 수 있는 protocol로 진화하게 됐다. 이제는 웹을 넘어서 인터넷을 지휘하는 통신 규약이 됐다.
API(Application Programming Interface)란?
컴퓨터의 기능을 실행 시키는 방법
서로 정보를 교환하는 행위를 가능하게 하는 도구
REST(REpresentational State Transfer) API란?
- 내 컴퓨터가 아니라 다른 원하는 컴퓨터에서의 기능을 실행 시키는 방법
- 특정 기술을 의미하는 것이 아니라 HTTP를 통한 통신에서 가장 효율적으로 통신하기 위한 소프트웨어 아키텍쳐
❗️아키텍처 스타일이란, 그 스타일을 따르는 아키텍처가 지켜야 하는 제약조건들의 집합이다.
❗️한마디로 표현 하자면 HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
REST API의 특징
REST의 6가지 원칙
- Uniform Interface
- URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일. - Stateless
- 요청 간에 클라이언트 정보가 저장되지 않으며, 각 요청이 분리되어 있고 서로 연결되어 있지 않는다. - Caching
- HTTP 통신의 특징을 가지기 때문에 HTTP 통신의 캐싱 기능을 활용 가능하다. - Client-Server
- REST 서버는 API 제공, 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보)등을 직접 관리하는 구조로 각각의 역할이 확실히 구분되어야 한다. - Hierarchical system
- REST 서버는 다중 계층으로 구성될 수 있다. - Code on demand
-
구성 요소
REST API에는 리소스와 행위, 표현 세가지의 구성 요소가 있다.
리소스(Resource)
아래의 표를 board 테이블이라 하자.
ID | 제목 | 내용 |
---|---|---|
1 | 글 1 | 글 1의 내용 |
2 | 글 2 | 글 2의 내용 |
3 | 글 3 | 글 3의 내용 |
아래의 표를 comment 테이블이라 하자.
ID | 댓글 | 부모 |
---|---|---|
1 | 댓글 1 | 1 |
2 | 댓글 2 | 1 |
3 | 댓글 3 | 1 |
테이블은 REST API에서 말하는 Resource라 할 수 있다. Resource의 특징은
- Resource는 고유한 ID를 가지고 있다.
- Resource는 명사로 표현해야 한다.
- URI를 통해 Resource를 가리킨다.
- Resource 전체를 Collection, ID를 가진 하나 하나의 객체를 Element라 한다.
ex)
example.com/boards => board 리소스의 Collection을 가지고 오는 API
example.com/boards/1 => board 리소스의 ID가 1인 Element를 가지고 오는 API
example.com/boards/1/comments => board 리소스의 ID가 1인 Element에 종속 돼 있는 comment Collection을 가지고 오는 API
행위(Verb)
REST API에는 CRUD 4가지의 행위가 존재한다. REST API의 행위는 HTTP의 메소드를 통해 표현해야한다.
- Create : POST
- Read : GET
- Update : PUT(내용의 전체), PATCH(내용의 일부)
- Delete : DELETE
표현(Representation)
주로 사용되는 것이 JSON형태 일 뿐이며 XML, HTML, 일반 텍스트 등 어떠한 형태로든 전달하면 된다.
(표현에 대한 참조할 글 : 링크)
REST API의 장단점
장점
- HTTP Protocol을 사용함으로 HTTP가 가지는 장점을 가진다.
- HTTP Protocol을 사용함으로 REST API 별도의 인프라를 구축할 필요가 없다.
- OPEN API를 제공하기 간편하다.
- 서버와 클라이언트의 경계가 명확하다.
- 원하는 타입으로 데이터 제공이 가능하다.
단점
- 표준 규약이 존재하지 않는다.
- 디자인 패턴에 맞지 않게 설계될 가능성이 높다.
- HTTP 통신 모델에 대해서만 지원한다.
'Study > Server' 카테고리의 다른 글
[Server] Go Web Server HTTPS 적용하기 (0) | 2022.06.07 |
---|---|
[Server] OAuth 알고 쓰기 (0) | 2022.06.02 |
[Server] 인증(Authentication)과 인가(Authorization), 그리고 JWT(JSON Web Token) (0) | 2022.05.01 |
[Network] HTTP란? 그리고 HTTP 1.1, HTTP 2 (0) | 2021.09.02 |
[Server] APACHE와 NGINX의 특징과 차이 (0) | 2021.08.29 |