일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 다트
- IF
- 코딩테스트
- 프로그래머스
- 앱개발
- Scanner
- Kotlin
- 안드로이드
- string
- BufferedWriter
- BufferedReader
- dart
- android studio
- 별찍기
- While
- App
- 백준
- CLASS
- Java
- Return
- for문
- error
- 코틀린
- flutter
- array
- androidstudio
- Android
- 반복문
- dataclass
- For
- Today
- Total
amid.jungs
[Network]RESTful API 본문
Ⅰ. 개념
REST API (= RESTful API)
• REST 아키텍처의 제약조건을 준수하는 애플리케이션 프로그래밍 인터페이스
• 자원을 이름으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미
• HTTP URI(Uniform Resource Identifier)을 통해 자원을 명시하고 HTTP Method(POST, GET, PUT, DELETE)를
통해 자원에 대한 CRUD Operation을 적용하는 것
Ⅱ. 구성
• 자원 (Resource) : URL
ex. /orders/order_date/1
• 행위(Verb) : Http Method
ex. GET, POST , PUT , DELETE
• 표현(Representaion Of Resource)
Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representaion)을 보냄
JSON, XML, TEXT 등 여러형태로 나타낼 수 있으며 대부분은 JSON으로 주고 받음
Ⅲ. 특징
1. Server-Client (서버-클라이언트 구조)
RestServer : API 제공 & 비지니스 로직처리 및 저장\
Client : 사용자 인증이나 contenxt등을 직접 관리
--> 서로 의존성이 줄어듬
2.Stateless (무상태)
Client의 context를 Server에 저장하지 않음
--> 세선 & 쿠키 같은 정보를 신경쓰지 않으므로 구현이 단순해짐
요청간에 클라이언트 정보가 저장되지 않으며 각 요청이 분리되어 있고 연결되어 있지 않음
3.Cacheable (캐시처리기능)
클라이언트는 응답을 캐싱할 수 있어야 함
클라이언트 - 서버 간 상호작용을 부분 & 완벽히 제거하여 Scalability와 성능을 향상시킴
4.Layered System(계층화)
Client는 REST API Server 만 호출
API Server 는 비지니스 로직을 수행하며 보안 , 로드밸런싱 , 암호화 , 사용자인증 등을
추가해 구조상 유연성을 줄 수 있음
5. Code-On-Demand(코드 온디맨드 : 선택사항)
요청을 받으면 서버 -> 클라이언트로 실행 가능 코드를 전송해
클라이언트 기능을 확장해 사용
6. Uniform Interface(인터페이스 일관성)
URI로 지정한 Resource에 대한 조작을 통일되고 한정적인 인터페이스로 수행
Other . 세부규칙
• 슬래시 구분자 ( / )는 계층관계를 나타내는데 사용한다
• URI 마지막 문자로 슬래시 ( / )를 포함하지 않는다
• 하이픈( - )은 URI 가독성을 높이는데 사용한다.
• 밑줄( _ )은 사용하지 않는다.
• URI 경로에는 가급적 소문자를 사용한다.
• 파일 확장자는 URI에 포함하지 않는다
대신 Accept Header를 사용
'etc' 카테고리의 다른 글
Git Token 인증 (로그인) 오류 : Support for password authentication was removed on (0) | 2022.01.23 |
---|---|
Git error : incorrect credentials insufficient scopes granted to token (1) | 2021.11.10 |
Git error : failed to push some refs to - (0) | 2021.03.06 |