본문 바로가기

Study/REST API

[REST API] REST API 이해하기

웹 강의를 들으면서 REST API를 사용하게 되었는데,

사용하는 기술의 개념은 알아야 할 것 같아서 구글링을 통해 개념을 정리해보았다!

 

 


 

 

 

 

 REST란? 

REST : Representational State Transfer

월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다. 

  • 자원을 이름으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.
  • 즉, 자원(resource)의 표현(representation)에 의한 상태 전달을 의미한다.
    자원 : 해당 소프트웨어가 관리하는 모든 것  예) 문서, 그림, 데이터, 해당 소프트웨어 자체 등
    자원의 표현 : 그 자원을 표현하기 위한 이름  예) DB의 학생 정보가 자원일 때, ‘students’를 자원의 표현으로 정한다.
  • 상태(정보) 전달
    JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다.
  • 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.
  • REST는 네트워크상에서 Client와 Server 사이의 통신 방식 중 하나이다.

 

 

REST의 구체적인 개념.

  • HTTP UR을 통해 자원을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
  • 웹 사이트의 이미지, 텍스트, DB 내용 등의 모든 자원에 고유한 ID인 HTTP URL를 부여한다.
  • HTTP Method 
    • GET : 정보 요청, URI가 가진 정보를 검색하기 위해 서버에 요청한다. (Read) 
    • POST : 정보 입력, 클라이언트에서 서버로 전달하려는 정보를 보낸다. (Create)
    • PUT : 정보 업데이트, 데이터 전체를 바꿀 때 사용한다. (Update)
    • PATCH : 정보 업데이트, 데이터 일부만 바꿀 때 사용한다. (Update)
    • DELETE : 정보 삭제, 안전성 문제로 대부분 서버에서 비활성화한다. (Delete )

 

REST의 장단점 

 장점 

  • HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구출할 필요가 없다.
  • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
  • Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.
  • REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
  • 서버와 클라이언트의 역할을 명확하게 분리한다.

 단점 

  • 표준이 존재하지 않는다.
  • 사용할 수 있는 메소드가(HTTP Method) 4가지 밖에 없어 제한적이다.

 

 

REST 구성 요소

1. 자원(Resource) : HTTP URI

  • 모든 자원은 고유한 ID를 가지고 ID는 서버에 존재하고 클라이언트는 각 자원의 상태를 조작하기 위해 요청을 보낸다. HTTP에서 이러한 자원을 구별하는 ID는 HTTP URI 이다.

2. 자원에 대한 행위(Verb) : HTTP Method

  • 클라이언트는 URI를 이용해 자원을 지정하고 자원을 조작하기 위해 Method를 사용한다.
    HTTP 프로토콜에서는 GET, POST, PUT, DELETE같은 Method를 제공한다.

3. 자원에 대한 행위의 내용 (Representations) : HTTP Message Pay Load

  • 클라이언트가 서버로 요청을 보냈을 때 서버가 응답으로 보내주는 자원의 상태
    JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다.

 

REST의 특징

1. 인터페이스 일관성

  • URI로 지정한 Resource에 대한 조작을 통일되고 한정적인 인터페이스로 수행한다.

2. 무상태(Stateless)

  • 클라이언트의 context가 서버에 저장되어서는 안 된다

3. 캐시 처리 기능(Cacheable) 

  • 웹 표준 HTTP 프로토콜을 그대로 사용하므로 웹에서 사용하는 기존의 인프라를 그대로 활용할 수 있다.
    HTTP가 가진 가장 강력한 특징 중 하나인 캐싱 기능을 적용할 수 있다.

4. 계층화(Layered System)

  • Client는 REST API Server만 호출한다.
  • REST Server는 다중 계층으로 구성될 수 있다.
    • API Server는 순수 비즈니스 로직을 수행하고 그 앞단에 보안, 로드밸런싱, 암호화, 사용자 인증 등을 추가하여 구조상의 유연성을 줄 수 있다.

5. Code on demand(optional)

  • 자바 애플릿이나 자바스크립트의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송하여 기능을 확장시킬 수 있다.
  • Server로부터 스크립트를 받아서 Client에서 실행한다.

6. 클라이언트/서버 구조 

  • 자원이 있는 Server, 자원을 요청하는 Client의 구조를 가진다.

 

 

 

 

 

 REST API란? 

 

API - Application Programming Interface

  • 인터페이스는 어떤 장치끼리 정보를 교환하기위한 수단이나 방법이다.
  • API는 응용프로그램 프로그래밍 인터페이스, 말 그대로 프로그램을 위한 인터페이스이다.
  • API란 클라이언트가 리소스를 요청할 수 있도록 서버측에서 제공된 인터페이스(interface)를 말하며
    클라이언트나 서버같은 다른 프로그램끼리 데이터를 주고받는 방법을 뜻한다. 

 

REST API

  • REST의 특징을 기반으로 서비스 API를 구현한 것이다.
  • REST는 HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.
  • 즉, REST API를 제작하면 델파이 뿐 아니라, 자바, C#, 웹 등을 이용해 클라이언트를 제작할 수 있다.
  • URI는 정보의 자원만 표현해야 하며, 자원의 행위는 HTTP Method에 명시한다

 

REST API를 왜 쓸까?

  • 클라이언트와 서버의 역할을 명확하게 분리할 수 있다
  • 애플리케이션을 모듈, 기능별로 분리할 수 있다.
  • 다른 애플리케이션, 플랫폼으로의 확장성(멀티 플랫폼)
  • 유지보수가 용이하다.
  • API가 의도하는 바를 명확하게 나타내므로 협업에 유리하다.

 

 

 

REST API의 설계 규칙

1. URI는 명사를 사용한다.(리소스명은 동사가 아닌 명사를 사용해야 한다.)

아래와 같은 동사를 사용하지 않아야 한다.

  • /getAllUsers
  • /createNewUser
  • /updateUser
  • /deleteUser

2. 슬래시( / )로 계층 관계를 표현한다.

  • http://restapi.example.com/houses/apertments

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

  • REST API는 분명한 URL를 만들어 통신을 해야 하기 때문에 혼동을 주지 않도록 URL 경로의 마지막에는 슬래시(/ )를 사용하지 않는다.

4. 밑줄( _ )을 사용하지 않고, 하이픈( - )을 사용한다.

 

5. URI는 소문자로만 구성한다.

  • PFC 3986(URL 문법 형식)은 URL 스키마와 호스트를 제외하고는 대소문자를 구별하도록 규정하기 때문이다.

6. HTTP 응답 상태 코드 사용

 

상태코드

  • 상태 코드는 클라이언트와 서버 간의 통신상태를 나타내는 일련의 표준화된 코드 모음이다.
  • 클라이언트는 해당 요청에 대한 실패, 처리완료 또는 잘못된 요청 등에 대한 피드백을
    상태 코드를 통해 서버에게 보낸 요청이 어떻게 처리되었는지 알 수 있다.
  • 1xx : 정보 응답 / 2xx : 성공 응답 / 3xx : 리다이렉트 / 4xx : 클라이언트 요청 오류 / 5xx : 서버 오류

7. 파일확장자는 URI에 포함하지 않는다.

  • Ex) http://localhost:8080/eStore/photo.jpg (X)

 

 

 

 REST API와 RESTful API의 차이 

  • REST의 설계 규칙을 잘 지켜서 설계된 API를 RESTful한 API라고 한다.
  • 'REST API'를 제공하는 웹 서비스를 'RESTful' 하다고 할 수 있다.

 

 


https://hanamon.kr/rest-api/

 

[서버] REST API란? - 하나몬

REST의 개념을 이해한다. REST의 특징을 이해한다. REST API의 개념을 이해한다. REST API의 설계 규칙을 이해한다. RESTful의 개념을 이해한다.

hanamon.kr

https://usefultoknow.tistory.com/entry/REST%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C

 

REST란 무엇일까?

REST란? REST란 "Representational State Transfer"의 약자이다. 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다. 웹에 존재하는 모든 자원(이미지,동영상,DB 자

usefultoknow.tistory.com

https://ko.wikipedia.org/wiki/REST

 

REST - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 대한민국의 힙합 음악가에 대해서는 R-EST 문서를 참고하십시오. REST(Representational State Transfer)는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프

ko.wikipedia.org


https://be-a-weapon.tistory.com/m/138

 

[API] API와 REST API

내가 정의해 본 REST API는 단순하게 말해서 'HTTP를 활용하여 CRUD를 실행하는 API'이다. 지금껏 REST API라고 생각하며 코드를 완성해왔지만 'REST API가 뭔가요?'라고 물었을 때 잘 대답하지 못할 것 같

be-a-weapon.tistory.com

첫 면접 회고 (velog.io)

 

첫 면접 회고

간단히 소감을 말하자면 첫 면접치고 무난하게 끝났다. 큰 어려움 없이 잘 흘러가서 다행이라고 생각해야 할지 시련이 닥쳐 성장할 여지를 주지 않은 것이 불행이라고 해야 할지 잘 모르겠지만

velog.io

 

'Study > REST API' 카테고리의 다른 글

[REST API] 프로젝트 생성  (0) 2022.08.12