티스토리 뷰
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/
'ETC > Summary' 카테고리의 다른 글
HTTP 통신이란 ? (0) | 2023.06.21 |
---|---|
접근제어자(private/default/protected/public) (0) | 2019.03.06 |
객체지향의 개념(추상화, 캡슐화, 상속성, 다형성) (0) | 2019.03.06 |
추상화 / 추상 클래스 (0) | 2019.03.05 |
DAO와 VO(-DTO) 개념정리 (0) | 2019.02.26 |
- Total
- Today
- Yesterday
- 함수
- 음성재생
- FLUTTER
- 스위프트
- 자바
- 연산자
- gem update
- Android
- 아이폰
- toml
- IOS
- sqld 자격증 합격
- .toml
- NoAnimation
- rotate
- 격파르타 합격후기
- Xcode
- ~=
- 안드로이드
- 아이폰앱개발
- Swift
- 코틀린
- 버전카타로그
- 격파르타 후기
- dart
- 격파르타 장점
- rotation
- 변수
- Kotlin
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |