[개발 상식] RESTful API

kimgwon·2023년 7월 24일

CS

목록 보기
2/10
post-thumbnail

RESTful API란?

REST의 기본 원칙을 성실히 지킨 API로, 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스입니다.

REST란?

REpresentational State Tranfer의 악자로, 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반에 대한 패턴입니다.

REST의 구성요소는?

자원(HTTP URI), 행위(HTTP Method), 표현(HTTP Message Pay Load)으로 구성되어 있습니다.

  • 자원
    • 모든 자원에는 고유 ID가 존재하고, 자원은 서버 내에 존재
    • 이 자원을 구별하는 ID가 HTTP URI
    • 클라이언트를 URI를 이용해서 자원을 지정하고 해당 자원에 대한 조작을 서버에 요청
  • 행위
    • GET, POST, PUT, DELETE 등
  • 표현
    • Client가 자원의 상태에 대한 조작을 요청하면 서버는 적절한 응답을 보냄
    • 하나의 자원에 대한 응답은 JSON, XML, TEXT, RSS 등 여러 형태가 될 수 있음
    • JSON 혹은 XML이 가장 일반적인 방식

API란?

시스템간 상호작용 하는 것을 도와주는 매개체로, 애플리케이션과 기기가 원할하게 통신할 수 있도록 해줍니다.

장점은?

Open API를 제공하기 쉽고, 원하는 타입으로 데이터를 주고 받을 수 있습니다.

단점은?

사용할 수 있는 메소드가 한정적이고, HTTP 통신 모델에 대해서만 지원합니다.

REST API의 특징은?

균일한 인터페이스, 무상태성, 계층화 시스템, 캐시 가능, 서버-클라이언트 구조입니다.

  • 균일한 인터페이스
    HTTP 표준을 따르는 환경이라면, 언어 및 플랫폼에 상관없이 어디서든 사용할 수 있는 인터페이스 스타일입니다.
  • 무상태
    상태정보를 따로 저장하고 관리하지 않아, API 서버는 단순히 들어오는 요청만 처리하게 됩니다. 서버에서 불필요한 정보를 관리하지 않음으로써 구현이 단순해집니다.
  • 계층화 시스템
    서버는 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있습니다. 클라이언트는 PROXY, Gateway 같은 네트워크 기반의 중간 매체를 사용할 수 있습니다.
  • 캐시 가능
    클라이언트 또는 중개자에 일부 응답을 저장하는 프로세스인 캐싱을 지원합니다.
  • 서버-클라이언트 구조
    서버는 API를 제공하고 비즈니스 로직 처리 및 저장을 책임집니다. 클라이언트는 사용자 인증이나 context(세션, 로그인 정보) 등을 직접 관리하고 책임집니다. 각각의 역할이 확실히 구분되어 클라이언트와 서버에서 개발해야 할 내용이 명확해지고 의존성이 줄어듭니다.

REST API 디자인 가이드는?

URI는 정보의 자원을 표현하고, 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현하는 것 입니다.

URI 설계 시 주의할 점은?

슬래시 구분자는 계층 관계를 나타내는데 사용합니다. URI 마지막 문자로 슬래시를 포함하지 않아야 합니다. 하이픈은 URI 가독성을 높이는데 사용되어야 합니다. 밑줄은 URI에 사용하지 않습니다. URI 경로에는 소문자가 적합합니다. 파일 확장자는 URI에 포함시키지 않습니다.

HTTP 응답 상태 코드

200: 성공

응답코드
200클라이언트의 요청을 정상적으로 수행
201클라이언트가 어떠한 리소스를 생성을 요청, 해당 리소스가 성공적으로 생성됨
204요청은 성공 했지만, 응답할 콘텐츠가 없음

300: 리다이렉션

응답코드
301클라이언트가 요청한 리소스에 대한 URI가 변경되었을때 사용하는 응답 코드

400: 클라이언트 오류

응답코드
400클라이언트의 요청이 부적절 할 경우 사용하는 응답 코드
401클라이언트가 인증되지 않은 상태에서, 보호된 리소스를 요청했을 때 사용하는 응답 코드
403유저 인증상태와 관계 없이 응답하고 싶지 않은 리소스를 클라이언트가 요청했을 때 사용하는 응답 코드
404찾을 수 없는 페이지. 주소를 잘못 입력했을 때 사용하는 응답 코드
405클라이언트가 요청한 리소스에서는 사용 불가능한 메소드를 이용했을 경우 사용하는 응답 코드

500: 서버 오류

응답코드
500서버에 문제가 있을 경우 사용하는 응답 코드
503서버쪽 분제로 서비스가 현재 불가능한 상태

0개의 댓글