일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 메모리 포랜식
- 행정지역 DB
- Forensic 절차
- PyAmdecoder
- jsp
- spring
- JSTL
- riceteacatpanda
- Layered Architecture
- ㅁㅇㅂ??ㅇㅈㄷ ㅎㅇㅌ...
- SessionAttribute
- 인턴 후기
- webhacking 처음
- Django
- EER
- mysql
- 정보보호병 후기
- react
- 인턴 지원
- 소프트웨어 개발보안 경진대회
- 네이버 인턴
- frontend
- 3단계 지역 DB
- 방명록 만들기
- reversing.kr
- 동읍면 DB
- DBMS
- 소개딩
- Database
- restapi
- Today
- Total
웹찢남
Spring - REST API 본문
Rest Api란 - 간단하게 생각하면 HTTP로 요청을 보내 특정 데이터를 받아오는 것
왜쓰냐? -> 안드로이드 앱, Javascript 등 다양한 클라이언트들이 어떤 공통 정보를 쓸 수 있도록 함
Rest의 특징
1. Uniform Interface: 구성 요소 사이의 인터페이스는 균일해야함 (효율성)
2. Stateless: 클라이언트와 서버의 통신에는 상태가 없어야 함, 모든 요청은 필요한 모든 정보를 담고 있어야함
3. Cacheable: 모든 서버 응답은 캐시가 가능한지 그렇지 아닌지 알 수 있어야 함
4. Self-descriptiveness: Rest API 메시지만 봐도 이를 쉽게 이해할 수 있는 자체 표현 구조 사용
5. Client-Server 구조: 사용자 인터페이스에 대한 관심을 데이터 저장에 대한 관심으로부터 분리(이식성,확장성)
6. Layered System: 다중 계층으로 구성 / 보안,암호화 계층 혹은 네트워크 기반의 중간 매체를 추가가능(유연성)
Rest API 설계
1. URI는 정보의 자원을 표현 ex) GET /members/1
2. 자원에 대한 행위는 HTTP Method로 표현
3. URI에 HTTP Method가 들어가면 안됨 ex) GET /books/delete/1 -> DELETE /books/1
4. URI에 행위에 대한 동사 표현 X ex) GET /books/show/1 -> GET /books/1
5. 경로 부분 중 변하는 부분은 유일한 값으로 대체
6. 슬래시는 계층 관계를 나타내는데 사용
7. URI 마지막 문자로 슬래시 사용 X
8. URI에 포함되는 모든 글자는 리소스의 유일한 식별자로 사용, URI가 다르면 다른 리소스
9. 하이픈(-)은 사용 가능, But 밑줄(_)은 사용 X
10. URI 경로에는 소문자가 적합
11. 파일 확장자는 URI에 포함되지 않음 Accept Header을 사용
12. 리소스 간에 연관 관계가 있는 경우 /리소스명/리소스 ID/관계가 있는 다른 리소스명 으로 사용
13. 자원을 표현하는 컬렉션(객체의 집합)과 도큐먼트(객체)
ex) http://edwith.org/courses/1 에서 courses는 컬렉션(복수) courses/1은 id가 1인 도큐먼트
위의 여러 특징들은 존재하지만 REST API에 대한 명확한 표준같은것은 없음
'BACK_END > Spring 공부' 카테고리의 다른 글
Spring - 상태유지기술 (0) | 2021.02.25 |
---|---|
Spring - Controller (0) | 2021.02.25 |
Spring - 방명록 만들기 (0) | 2021.02.25 |
Spring - 레이어드 아키텍처 (0) | 2021.02.23 |
Spring - MVC (0) | 2021.02.17 |