REST API, Web API

YangJiWon·2020년 6월 13일
0

API란?

  • API는 Application Programming Interface의 약자입니다.
  • API는 응용 프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻합니다.
  • 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공합니다.

REST API란?

  • REST는 REpresentational State Transfer라는 용어의 약자로서 2000년도에 로이 필딩의 박사학위 논문에서 최초로 소개되었습니다.
  • REST API란 말 그대로 REST형식의 API를 말합니다.
  • REST API란 핵심 컨텐츠 및 긴으을 외부 사이트에서 활용할 수 있도록 제공되는 인터페이스입니다.
  • 웹 브라우저 뿐만 아니라 다양한 클라이언ㅌ트가 등장하면서 그런한 클라이언트들에게 대응하기 위해 REST API가 널리 사용되기 시작하였습니다.
  • 매시업(Mashup) : 서비스 업체들이 다양한 REST API를 제공함으로써, 클라이언트는 이러한 REST API들을 조합한 어플리케이션을 만든 것

REST의 조건

  • client-server
  • stateless
  • cache
  • uniform interface
  • layered system
  • code-on-demand (optional)
  • 다른 것들은 모두 쉽게 구현할 수 있지만 문제는 uniform interface입니다.

uniform interface 조건

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

REST API는 쉽지 않다. 그래서, 보통은 Web API(혹은 HTTP API)를 사용합니다.

Web API 디자인 가이드

  • URI는 정보의 자원을 표현해야 합니다.
  • 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현합니다.

자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현

  • Post : Post를 통해 해당 URI를 요청하면 리소스를 생성
  • GET : GET를 통해 해당 리소스를 조회합니다. 리소스를 조회하고 해당 도큐먼트에 대한 자세한 정보를 가져옵니다.
  • PUT : PUT를 통해 해당 리소스를 수정합니다.
  • DELETE : DELLTE를 통해 리소스를 삭제합니다.
  • GET /members/1 (o)
  • GET /members/get/1 (x)
  • GET /members/add (x)
  • POST /members (o)
  • GET /members/update/1 (x)
  • PUT /members/1 (o)
  • GET /members/del/1 (x)
  • DELETE /members/1 (o)

URI는 정보의 자원을 표현해야 합니다.

  • GET /members
    : 위의 표현은 맴버의 모든 정보를 달라는 요청입니다.
  • GET /members/delete/1
    : GET은 정보를 요청할 때 사용합니다. 위와 같이 동사로 삭제를 표현하면 안 됩니다.
  • DELETE /members/1
    : HTTP Method 중의 하나인 DELETE를 이용하여 삭제를 표현해야 합니다.

슬래시 구분자는 계층을 나타낼 때 사용

  • http://domain/houses/apartments
  • URI 마지막 문자로 슬래시 구분자를 포함하지 않습니다.
  • 하이픈(-)은 URI 가독성을 높일 때 사용합니다.
  • 언더바(_)는 사용하지 않습니다.
  • URI경로는 소문자만 사용합니다.
  • RFC 3986(URI 문법 형식)은 URI 스키마와 호스트를 제외하고는 대소문자를 구별합니다.
  • 파일확장자는 URI에 포함하지 않습니다.
  • Accept Header를 사용합니다.

상태 코드

상태코드내용
200클라이언트의 요청을 정상적으로 수행함
201클라이언트가 어떠한 리소스 생성을 요청, 해당 리소스가 성공적으로 생성됨(POST를 통한 리소스 생성 작업 시)
400클라이언트의 요청이 부적절 할 경우 사용하는 응답 코드
401클라이언트가 인증되지 않은 상태에서 보호된 리소스를 요청했을 때 사용하는 응답 코드(로그인 하지 않은 유저가 로그인 했을 때 요청 가능한 리소스를 요청했을 때)
403유저 인증상태와 관계 없이 응답하고 싶지 않은 리소스슬 클라이언트가 요청했을 때 사용하는 응답 코드(403보다는 400이나 404를 사용할 것을 권고, 403 자체가 리소스가 존재한다는 뜻이기 때문에
404클라이언트가 서버와 통신할 수는 있지만 서버가 요청한 바를 찾을 수 없을 때의 응답 코드
405클라이언트가 요청한 리소스에서는 사용 불가능한 Method를 이용했을 경우 사용하는 응답 코드
301클라이언트가 요청한 리소스에 대한 URI가 변경 되었을 때 사용하는 응답 코드(응답 시 Location header에 변경된 URI를 적어줘야 합니다.)
500서버에 문제가 있을 경우 사용하는 응답 코드

profile
데이터데이터데이터!!

0개의 댓글