2023. 12. 11. 19:39 Web
REST API에 대해서.
restful api란 무엇인가?
restful api란 두 컴퓨터 사이의 정보를 안전하게 교환하기 위해 사용되는 인터페이스 중 하나이다.
여러 API 방식 중 일반적으로 REST 원칙을 따르는 API를 지칭한다.
대부분의 사람들이 REST API는 URL 을 통해서 Resource를 식별하고 Http Method를 사용하여 해당 Resource에 대한 행위를 규정하며 그 결과를 전달 받는 것으로 알고있다
이 포스팅에서는 REST API에 대해서 좀더 자세히 알아본다.
REST란? ( Representational State Transfer )
분산 하이퍼 미디어 시스템을 위한 API 아키텍쳐 스타일을 의미한다.
오늘날 HTTP 규약만 잘 지켜도 REST API 조건 중 다수를 만족할 수 있다.
그렇다면 REST API 아키텍처 스타일에는 어떤것들이 있을까?
주요 스타일은 아래의 6가지가 존재하며 해당 사항에 대해 좀더 자세히 알아볼 것이다.
. client - server
. stateless
. cache
. uniform interface
. layered system
. code on demand(Optional)
Client - Server
. UI는 client에서, data는 server에서 처리하여 관리한다.
. 즉, client와 server가 별도로 개선될 수 있어야 한다.
Stateless
. client와 server는 요청을 완료할 때 필요한 모든 정보를 제공해야 한다.
. 요청이 일어난 시점에 제공된 정보만을 사용하여 작업을 완료할 수 있어야 함.
Cache
. 응답은 cache될 수 있어야 하며, 이는 성능향상에 도움이 된다.
Layered System
. 계층화된 구조를 활용하여 각 Component의 행동을 제약하고 추상화 할 수 있어야 한다.
-> REST Server는 다중 계층으로 구성될 수 있고 보안, 로드 밸런싱, 암호화 계층 등 을 추가할 수 있다.
Uniform Interface
: resource에 대한 조작을 통일되고 한정적인 interface로 수행하는 아키텍처를 의미한다.
. resource는 uri로 식별이 되어야 한다.
. resource에 대한 관리는 http method에 해당 방식이 포함되어야 한다.
-> http method로 CRUD 구분
. self-descriptive message
-> message는 스스로를 설명해야한다
-> message 안에 해당 요청, 응답에 대한 모든 정보가 포함되어야 한다.
=> ex : message 안에 Content-Type이 생략되어 있는 등의 경우는 self-descriptive message를 불만족.
. HATEOAS
-> application의 상태는 항상 hyperlink를 이용해서 전이되어야 한다.
=> ex : 게시글 생성 버튼 링크를 통해 application의 상태가 변경된다.
Code on Demand(Optional)
. Server에서 보낸 정보를 토대로 client에서 code를 실행할 수 있어야 한다.
-> ex : server 가 client 에 응답으로 보낸 것중 javascript
Uniform Interface가 필요한 이유
. server와 client 간의 독립성을 보장하기 위해서
-> ex : server가 기능을 변경해도 client는 업데이트 할 필요가 없다.
-> ex : web의 경우 브라우저 업데이트가 되어도 web site는 변경할 필요가 없다.
REST API를 구현 시 주의해야 할 설계 원칙은 어떤 것들이 있을까
. Url 은 Resource를 표현해야 한다.
. Resource에 대한 행위는 Http Method를 통해 나타낸다.
. 슬래시는 Url 마지막에 사용하지 않는다.
. 하이픈은 Url 가독성을 높이기 위해서 사용할 수 있다.
. 언더바는 띄어쓰기처럼 보일때가 있고, Url에 혼동을 줄 수 있어 사용하지 않는다.
-> 하이픈을 사용하는걸 추천
. Url 경로에는 소문자만 사용한다.
-> Url은 대소문자를 구분하기 때문에 다른 resource로 인식할 여지가 있다.
. file 확장자는 url에 포함시키지 않는다.
-> 대신 Header에 AcceptHeader를 사용하여 file의 확장자를 알수 있게 한다.
REST API를 통한 CRUD 작업과 이에 대응하는 Http Method
. CREATE : POST
. READ : GET
. UPDATE : PUT, PATCH
. DELETE : DELETE
=> Http method와 관련된 CRUD에 대해서는 추후 좀 더 자세한 포스팅으로 다룰 예정이다.
참고
. https://youtu.be/RP_f5dMoHFc?si=q-5csLAZvzXnm_-h
'Web' 카테고리의 다른 글
WEB의 작동 방식에 대해서 (0) | 2023.12.13 |
---|---|
인터넷의 작동 방식에 대해서 (0) | 2023.12.13 |
웹에서 세션이란 무엇이고 어떻게 활용되는가? (0) | 2023.11.14 |
웹에서 쿠키란 무엇이고 어떻게 활용되는가? (0) | 2023.11.14 |
OAuth2에 대해서. (0) | 2023.11.14 |