[IOS 로드맵] RESTful APIs

willis18·2021년 9월 27일
0

IOS 로드맵

목록 보기
19/109

RESTful APIs

REST(REpresentational State Transfer) 아키텍처 스타일의 디자인 원칙을 준수하는 API입니다
핵심 컨텐츠나 기능을 외부 사이트에서 활용할 수 있도록 제공되는 인터페이스

REST 스타일

  • client-server : REST 서버는 API 제공, 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보)등을 직접 관리하는 구조로 각각의 역할이 확실히 구분되기 때문에 클라이언트와 서버에서 개발해야 할 내용이 명확해지고 서로간 의존성이 줄어들게 됩니다.

  • stateless : REST는 무상태성 성격을 갖습니다. 다시 말해 작업을 위한 상태정보를 따로 저장하고 관리하지 않습니다. 세션 정보나 쿠키정보를 별도로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만을 단순히 처리하면 됩니다. 때문에 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않음으로써 구현이 단순해집니다.

  • cache : REST의 가장 큰 특징 중 하나는 HTTP라는 기존 웹표준을 그대로 사용하기 때문에, 웹에서 사용하는 기존 인프라를 그대로 활용이 가능합니다. 따라서 HTTP가 가진 캐싱 기능이 적용 가능합니다. HTTP 프로토콜 표준에서 사용하는 Last-Modified태그나 E-Tag를 이용하면 캐싱 구현이 가능합니다.

  • uniform interface : Uniform Interface는 URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일을 말합니다.

  • layered system : REST 서버는 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있고 PROXY, 게이트웨이 같은 네트워크 기반의 중간매체를 사용할 수 있게 합니다.

  • code-on-demand (optional) : Server로부터 스크립트를 받아서 Client에서 실행하게 됩니다. (선택사항)

API?

API(Application Programming Interface 애플리케이션 프로그래밍 인터페이스, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다

REST API를 이용하기 어렵다, HTTP API 활용

REST 스타일중에 uniform interface를 세부적으로 보자면

  • 리소스가 URI로 식별되야 합니다.
  • 리소스를 생성,수정,추가하고자 할 때 HTTP메시지에 표현을 해서 전송해야 합니다.
  • 메시지는 스스로 설명할 수 있어야 합니다. (Self-descriptive message)
  • 애플리케이션의 상태는 Hyperlink를 이용해 전이되야 합니다.(HATEOAS)

중 아래 두가지가 JSON 메시지로(API)써 충족하기가 어려워서
보통은 Web API or HTTP API를 활용합니다 아래에는 이것에 대해 설명하겠습니다

하지만 위처럼 어기는 경우가 있더라도 RESTful API라고 굳어가는게 있으니 어느정도 정확히는 구분이 되지만 실제로 쓰이는 용어의 개념은 아래같은 개념일 수도 있겠다고 머리속에 넣어놓으시고 실제 사용때 정확히 체크하시길 바랍니다 ㅠㅠ

HTTP API 디자인 가이드

  • URI는 정보의 자원을 표현해야 합니다.
    GET /members
    GET /members/delete/1 -> delete 행위가 들어가면 x
  • 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현합니다.
    GET /members/delete/1 -> DELETE /members/1
    이렇게 행위는 맨앞에 기재함으로 표현합니다.

상태코드에 따른 내용

상태 코드 (성공)

상태 코드 (클라이언트로 인한 오류)

상태 코드 (서버로 인한 오류)

이러한 API 디자인 가이드를 쓰는 이유

장점

  • HTTP 프로토콜을 그대로 사용하기 때문에 별도의 인프라를 구축할 필요가 없습니다.
  • 서버와 클라이언트 역할을 분리할 수 있게 해 줍니다.

단점

  • 사용할 수 있는 메소드가 4가지 밖에 존재하지 않습니다. (위에서 알아보았던 - POST, GET, PUT, DELETE 방식밖에 없습니다.)
  • 표준이 존재하지 않습니다.
  • HTTP 통신 모델에 대해서만 지원합니다.

HTTP/HTTPS/RESTful API

소켓방식과 http 방식의 차이도 설명되어있으니 좋은 게시글이라 링크 남깁니다.
https://babbab2.tistory.com/70

RESTful API 실습하기

실습하기 위하여 잘 정리된 링크가 있어서 첨부합니다
다만 아래 링크는 사이트를 통해 JSON데이터, GET, POST를 직접하기때문에 조금더 복잡할 수도 있습니다.
따로 별도의 API를 제공하는 서버가있다면 별도의 사이트는 안쓰셔도 될듯
https://ios-development.tistory.com/59

출처 : https://meetup.toast.com/posts/92
https://minosaekki.tistory.com/13
https://www.boostcourse.org/web316/lecture/16741?isDesc=false

0개의 댓글