티스토리 뷰

ETC/Summary

REST ful 이란?

LeeeGi 2019. 2. 19. 11:35
반응형

RESTful이란?

 

- Representational State Transfer : 웹의 장점을 최대한 활용할 수 있는 아키텍처

 

- 다양한 브라우저, 안드로이드폰, 아이폰과 같은 모바일 디바이스에서도 통신 가능

 

- 아키텍처 : Hypermedia API의 기본을 충실히 지키면서 범용성 보장

 

 

 

REST의 특징

 

1. Uniform : 

 

URI 지정 리소스에 대한 조작 통일, 한정적인 인터페이스 수행

 

 

2. Stateless : 

 

사용자, 클라이언트 컨택스트 -> 서버쪽에 유지하지 않음 / 세션, 쿠키등 별도로 관리 x, API서버는 요청만 들어오는 메

시지로 처리 -> 구현이 단순

 

 

3. Cacheable : 

 

HTTP 라는 기존 웹표준을 그대로 사용, 캐싱 기능, Last-Modified / E-Tag를 이용

 

 

4. Self-descriptiveness :

 

REST API메시지만 보고도 이를 쉽게 이해할 수 있는 자체 표현 구조

 

 

5. Client-Server Architecture :

 

API를 제공, 제공된 API를 이용해서 비즈니스 로직 처리 및 저장을 책임짐 / 클라이언트 -> 사용자 인증이나 컨택스트 등을 직접 관리하고 책임 / 서로간의 의존성이 줄어듬

 

 

6. 계층형 구조 : 

 

클라이언트 입장 REST API 서버만 호출, 서버는 다중 계층을 구성 가능(ex. 로드 밸런싱, 암호화, 사용자 인증 등 추가) 구조상의 유연성

 

 

 

REST 구성

 

- 자원(RESOURCE) : URI

 

- 행위(Verb) : HTTP Method

 

- 표현(Representations)

 

 

 

REST API 디자인 가이드

 

- URI는 Resource를 표현해야 한다.

 

- Resource에 대한 행위 : HTTP Method로 표현

 

 

 

1. REST API 중심 규칙

 

1.1 URI는 정보의 자원을 표현

 

---> HTTP Method의 행위가 URI표현으로 들어가서는 안됨

 

 

1.2 자원에 대한 행위는 HTTP Method로 표현

 

---> HTTP Method 행위로 CRUD를 할 수 있음

 

 

 

2. URI 설계 시 주의할 점

 

 

2.1 소문자를 되도록이면 사용

 

 - 대소문자를 구분하기 때문에 다른 자원으로 인식하게 됨

 

 - RFC 3986은 URI 스키마와 호스트를 제외하고는 대소문자를 구별하도록 규정

 

 

2.2 하이픈은 URI 가독성을 높이는데 사용하자

 

 - 경로에 띄어쓰기가 들어가는 경우 %20이 들어가 가독성이 매우 떨어짐

 

 - 하이픈을 사용하여 띄어쓰기를 대체하고 가독성을 높일 수 있음

 

 - 밑줄(_)은 글꼴에 따라 다르긴 하지만 보기 어렵거나 문자가 가려지기도 함

 

 

2.3 확장자를 사용하지 말자

 

 - REST API는 확장자를 사용x 자원을 다루는데 더 유연

 

 - 확장자 대신 Accept Header를 사용하여 문제를 해결

 

 

3. 자원을 표현하는 Collection / Document

 

 - 도큐먼트는 단순한 문서

 

 - 컬렉션 문서들의 집합, 객체들의 집합

 

 

4. REST API

 

 - https://www.data.go.kr (공공데이터 포턴)

 

 - https://dev.twitter.com/rest (트위터)

 

 - https://yellowid.kakao.com / https://github.com/plusfriend/auto_reply (카카오톡 플러스 친구 자동응답)

 

 

 

 

 * 참조

1. https://meetup.toast.com/posts/92

2. http://blog.remotty.com/blog/2014/01/28/lets-study-rest/#prologue

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

4. https://nesoy.github.io/articles/2017-02/REST

5. https://ko.wikipedia.org/wiki/CRUD

6. https://www.slideshare.net/SangBaekLee3/restful-api-67239776?qid=e125f342-ebf9-4472-8ade-1c5041cdc0b1&v=&b=&from_search=2

7. https://academy.realm.io/kr/posts/best-practices-pain-points-mobile-networking-rest-api-failures/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함