728x90
📌Restful API
◾ Rest란?
- 자원을 이름으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미
* 자원 : 해당 SW가 관리하는 모든 것 ex. 문서, 그림, 데이터 등
* 자원의 표현 : 그 자원을 표현하기 위한 이름 ex. DB의 학생 정보가 자원인 경우 'students'를 자원의 표현으로 정함
* 상태 전달 : 데이터가 요청되어지는 시점에 자원의 상태를 JSON 혹은 XML을 통해 데이터를 주고 받음 - HTTP URI를 통해 자원을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미
- 웹 사이트의 이미지, 텍스트, DB 내용 등 모든 자원에 고유한 ID인 HTTP URI를 부여
◾ Rest 구성요소
1. 자원 : URI
- 해당 사이트의 특정 자원의 위치를 나타내주는 유일한 주소
- 모든 것을 명사로 표현하고 세부 리소스에 ID를 붙임
- 클라이언트는 URI를 이용해 자원을 지정하고, 해당 자원의 상태에 대한 조작을 서버에 요청
2. 행위 : Method
- HTTP 프로토콜의 Method 사용
🔸 CRUD Operation
HTTP 프로토콜 Method뜻
GET | 정보의 선택 (조회) |
POST | 정보의 생성 |
PUT | 정보의 업데이트 |
DELETE | 정보의 삭제 |
HEAD | header 정보 조회 |
3. 표현 : Representation
- 클라이언트가 자원의 상태에 대한 조작을 요청하면 Server는 이에 적절한 응답을 보낸다.
- REST 에서 하나의 자원은 JSON, XML을 통해 데이터를 주고 받는 것이 일반적이다.
◾ Restful API와 Rest API 차이점
1. Rest API
- 어떤 자원에 의해 CRUD 연산을 하기 위해 URI(Resource)로 GET, POST 등의 방식(Method)을 사용하여 요청을 보내며, 요청을 위한 자원은 특정한 형태로 표현 됨
- REST API를 제공하는 웹 서비스를 Restful 하다고 할 수 있다.
2. Restful API
- 자원을 이름으로 구분해 해당 자원의 상태(정보)를 주고 받는 모든 것
- 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 잇는 아키텍처 스타일
- 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나
- REST API를 제공하는 웹 서비스를 Restful 하다고 할 수 있다.
3. URI와 URL의 차이점
- URI : 인터넷 상 장원의 위치. URL을 포함한 개념
- URL : 인터넷 상의 자원을 식별하기 위한 문자열의 구성
◾ REST API 설계 기본 규칙
- 도큐먼트 : 객체의 인스턴스 혹은 DB 레코드와 유사한 개념
- 컬렉션 : 서버에서 관리하는 디렉터리라는 리소스
- 스토어 : 클라이언트에서 관리하는 리소스 저장소
1. URI는 정보의 자원을 표현해야 한다.
- 리소스는 명사 및 영문 소문자를 사용
- 리소스의 도큐먼트 이름은 단수 명사를 사용
- 리소스의 컬렉션 이름은 복수 명사를 사용
- 리소스의 스토어 이름은 복수 명사를 사용
2. 자원에 대한 행위는 HTTP Method로 표현
- URI에 HTTP Method가 들어가면 안됨
- URI에 행위에 대한 동사 표현이 들어가면 안됨
→ CRUD 기능을 나타내는 것은 URI에서 사용하지 않음 - 경로 부분 중 변하는 부분은 유일한 값으로 대체
→ ID는 특정 리소스를 나타내는 고유 값
🔸 예시
수정 전수정 후
GET /Member/1 | GET /members/1 |
GET /members/delete/1 | DELETE /members/1 |
GET /members/show/1 | GET /members/1 |
GET /members/insert/2 | POST /members/2 |
student 생성 시 | POST /students |
id='abcd'인 student 삭제 시 | DELETE /students/12 |
◾ REST API 설계 규칙
1. 슬래시(/)는 계층관계를 나타낸다.
2. URI 마지막 문자로 슬래시(/) 사용하지 않음
3. 밑줄(_) 보다 하이픈(-) 사용
- https://localhost:8080/products/categories/post_comments → (X)
- https://localhost:8080/products/categories/post-comments → (O)
4. URI 경로에는 소문자 사용
- https://localhost:8080/products/categories/Post_comments → (X)
- https://localhost:8080/products/categories/post-comments → (O)
5. 파일 확장자는 포함하지 않는다. 필요한 경우 Accept header에 명시
- https://localhost:8080/products/categories/photo.jpg → (X)
- GET /products/categories/photo
HTTP/1.1 Host : localhost:8080 Accept : image/jpg → (O)
6. 전달하고자 하는 명사를 사용하되, 컨트롤 자원을 의미하는 경우 예외적으로 동사를 사용
7. URI에 작성되는 영어를 복수형으로 작성
728x90
'스터디 > 테크톡' 카테고리의 다른 글
[테크 톡 - 9주차] 쿠키와 세션 (0) | 2023.08.10 |
---|---|
[테크 톡 - 7~8주차] 싱글톤 패턴과 정적 클래스 (0) | 2023.08.10 |
[테크 톡 - 5주차] Spring Security (0) | 2023.08.10 |
[테크 톡 - 3~4주차] 비동기 처리 + AJAX (1) | 2023.08.10 |
[테크 톡 - 2주차] MVC 패턴 (0) | 2023.08.10 |