티스토리 뷰

서버 관련/Backend 지식

REST API 란?

JASON 자손9319 2020. 4. 9. 23:19

# 서버 API

API(Application Programming Interface)는 특정 서비스나응용 프로그램에서 사용할 수 있도록 OS나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스이다.

서버 API는 web 서버에 어떠한 요청을 하였을 때 그에 맞는 응답을 줄 수 있는 Endpoint를 Web을 통하여 노출한 것이다.

 

 예를 들자면 어떠한 개발자가 http://54.43.122.44/weather 라는 endpoint에 현재 날씨를 text로 반환하는 API를 open했다면 사용자는 해당 endpoint로 요청하여 현재 날씨를 text로 받아올 수 있다.

# REST API 

REST는 서버 API를 만드는 방법론 중 하나이며 REpresentational State Transfer의 준말이다.

REST는 웹(HTTP)의 장점을 최대한으로 활용하기 위한 아키텍처로 HTTP기반으로 필요한 자원에 접근하는 방식이며  REST API는 이러한 REST를 통하여 API를 구현한 상태이다.

REST는 다음과 같은 특징을 가지고 있다.

 

 1. 모든 resource는 HTTP 메소드(GET,POST,PUT,DELETE)를 사용하여 접근한다.

 2. 클라이언트와 서버의 역할이 분리되고 서버 사이드의 모든 resource는 resource별로 클라이언트가 접근 가능한 URI를 가지고 있다.

 3. 모든 요청은 클라이언트가 요청할 때마다 응답을 주기 때문에 상태정보를 기억할 필요가 없어 자유도가 높고 구현이 쉬워진다.

 4. HTTP 표준에 따르는 모든 플랫폼에서 사용가능하다

# HTTP Method

 HTTP 메소드는 클라이언트가 웹 서버에게 요청하는 목적을 알리는 수단이다.

 HTTP 메소드의 종류는 대표적으로 GET,POST,PUT,DELETE 등이 있다.

 Method type  description
 GET  요청된 리소스를 조회(READ)
 POST  요청된 리소스를 생성(CREATE)
 PUT  요청된 리소스를 수정(UPDATE)
 DELETE  요청된 리소스를 삭제(DELETE)

# REST API 메시지 

 - HTTP header

 HTTP Body에 데이터가 어떤 데이터 포맷으로 담겼는지(text,json,xml ...) 정의

 - HTTP Body

 리소스를 정의 된 데이터 포맷으로 전달(text,json,xml ...) 

 - HTTP 응답상태코드

 리소스 요청에 대한 응답의 상태를 상태코드(200,404..) 형태로 전달

 

응답상태코드

(2XX 성공 상태 코드)

description
200 클라이언트의 요청을 정상적으로 수행하였고, 본문은 요청된 리소스를 포함
201 어떠한 리소스 생성 작업을 요청받았으며, 생성 작업을 성공하였다(POST 등의 요청)
204 요청에 성공하였지만 제공할 내용이 없음

응답상태코드

(4XX 클라이언트 에러 상태 코드)

description
400 클라이언트가 잘못 된 요청을 보내고 있음
403 요청이 서버에 의하여 거부되었음
404 요청한 URL을 찾을 수 없음
405 요청한 URL이 메서드를 지원하지 않음을 의미

응답상태코드

(5XX 서버 에러 상태 코드)

description
500 서버에 오류가 발생하여 응답할 수 없음
504 서버에서 다른 서버로 요청을 보냈으나, 응답 지연이 발생하여 처리 불가

# URI 작성 규칙

 1) 소문자를 사용한다 (대소문자에 따라서 다른 리소스로 인식 됨)

 2) 밑줄(_)을 사용하지 않고 가독성을 높이기 위하여 긴 URI에서는 하이픈(-)을 사용한다

 3) jpg,txt와 같은 확장자를 사용하지 않는다

 4) 슬래시(/) 는 계층관계를 나타내는 데 사용

    - http://api.com/fruit/apple/redapple

 5) URI 마지막 문자로 슬래시(/)를 포함하지 않는다

 6) URI를 이루는 resource들은 동사보다는 명사로 이루어져야 함

 7) 리소스간의 관계를 URI를 통하여 표현해주어야 한다.

    - /classmember/jason/food(학급멤버 jason의 음식 [소유])

    - /users/{user_id}/likes/food ('좋아하는' 음식을 표현하기 위하여)

'서버 관련 > Backend 지식' 카테고리의 다른 글

GraphQL 스키마 작성하기 (GraphQL Schema)  (0) 2020.04.18
GraphQL(Graph Query Language) 란?  (0) 2020.04.16
REST API 란?  (0) 2020.04.09
TAG
, , ,
댓글
댓글쓰기 폼