IT/Network

REST API 란?

착한아줌마 2018. 8. 21. 13:52
반응형

 

 

REST API에 대해 확인할 필요가 있어

검색하는데 

개념이 확 와닿지 않았다..만

 

네이버 지식인에 어느 분의 답변보고

바로 이해가 됬음

(아 네이버 지식인 안에도 진주가 많음)

 

 

 

* 정의 *

 

HTTP 기반으로 서버의 필요한 자원에 접근하는 방식 정한 아키텍처

 

 

 

예로 test.com에 test 1번 결과값을

http://test.com/test/1/result

라고 설계해놓을 수 있음

 

다른 HTTP Method를 사용하여 해당 정보를 수정, 삭제도 가능

(PUT, DELETE)

 

 

 

* REST API의 제약조건 *  

 



1. 클라이언트/서버 : 클라이언트와 서버가 각각 역할이 구분되어야 한다. 
서버는 API를 제공하고 API 요청 시 비지니스 로직 처리와 데이터 저장을 책임. 클라이언트는 사용자 인증, 상태(세션, 로그인 정보)관리와 서버 리소스 요청을 책임지는 구조로 역할 구분(상호 의존성을 줄임)


2. 무상태(Stateless) : REST 서버는 작업을 위한 상태정보(세션, 쿠키 등)를 관리하지 않아야 한다.
시스템 영향없이 관리 및 업데이트 가능


3. 캐쉬(Cacheable) : 캐쉬를 제공해야 한다.
HTTP 웹표준으로 HTTP가 가진 캐싱 기능이 적용됨


4. 계층화(Layered system) : 서버를 다중 계층으로 구성 할 수 있어야 한다.
비지니스 로직을 수행하는 API 서버와 그 앞단에 사용자 인증, 암호화, 로드밸런싱 등의 계층을 추가해 구조상의 유연성 제공


5. 인터페이스 일관성(Uniform interface)
아키텍처를 단순화하고 분리해 각 부분을 독립적으로 발전 시킬 수 있음

 

 

* REST API 구성요소 *



- 자원(리소스) : 접근할 대상 - URI를 통해 식별
위 예의 test.com에 test 1번 결과값을 http://test.com/test/1/result라고 표현한 것과 같은 느낌


- 행위(메소드) : 자원에 대한 행위 - 표준 HTTP 메소드에 따라 자원에 접근
위 예의 DELETE 메소드로 http://test.com/test/1/result을 요청하면 해당 정보 삭제


- 정보(메시지) : 자원에 대한 정보 - HTTP 해더와 바디, 응답코드 활용
리소스 요청에 대한 결과를 받는 메시지 방법, HTTP의 바디에 JSON 또는 다른 형식으로 전달 받음

 

 

 

 

사실상 기본적은 GET방식에 쓰이는 쿼리스트링과 비슷하게 느껴지기도 함

정확한 차이까지는 모르겠음

 

 

 

 

 

 참조

 - 네이버 지식인

https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040203&docId=279350996&qb=cmVzdCBhcGkgcGhw&enc=utf8&section=kin&rank=1&search_sort=0&spq=0&pid=T0w9WlpVuEKsscpZsZCssssssCo-115579&sid=exyKTAfcRKkhvGjsp15Rtw%3D%3D

의 undefcat님의 답변

 - 블로그 http://blog.hjf.pe.kr/462