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

. https://kmkunk.tistory.com/m/139

반응형
Posted by Sweetmeats_boy

블로그 이미지
Sweetmeats_boy

태그목록

Yesterday
Today
Total

달력

 « |  » 2024.11
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함