✔︎ API(Application Programming Interface)
데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것
✔︎ REST API란?
✔︎ REST API의 특징
- REST를 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다.
- REST는 HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.
✔︎ REST API 설계 기본 규칙
-
URI는 정보의 자원을 표현해야 한다.
-
resource는 동사보다 명사, 대문자보다 소문자, 복수 명사를 사용한다
ex) GET /Member/1 → GET /members/1
-
자원에 대한 행위는 HTTPS Method(GET, PUT, POST, DELETE 등)로 표현한다.
-
URI HTTP Method가 들어가면 안된다
-
URI 행위에 동사 표현이 들어가면 안된다
-
경로 부분 중 변하는 부분은 유일한 값으로 대체한다.
ex) GET /members/delete/1 → DELETE /members/1
ex) GET /members/show/1 → GET /members/1
ex) GET /members/insert/2 → GET /members/2
ex) id=3인 student를 삭제 → DELETE /students/3
✔︎ REST API 설계 규칙
- 슬래시(/) 구분자는 계층 관계를 난타내는데 사용한다.
ex) http://restapi.example.com/houses/apartments
- URI 마지막 문자로 슬래시(/)를 포함하지 않는다
- 하이픈(-)은 불가피하게 긴 URI의 가독성을 높이는데 사용
- 밑줄(_)은 URI에 사용하지 않는다.
- URI 경로에는 소문자가 적합하다.
- 파일 확장자는 URI에 포함하지 않는다. 대신 Accept header를 이용하여 파일 확장자를 명시한다.
- 리소스간 연관 관계가 있는 경우(소유의 관계를 표현할 때 사용한다)
ex) /users/{userid}/devices
✔︎ 응답상태코드
- 1XX: 전송 프로토콜 수준의 정보 교환
- 2XX: 클라이언트 요청이 성공적으로 수행됨
- 3XX: 클라이언트는 요청을 완료하기 위해 추가적인 행동을 취해야함
- 4XX: 클라이언트의 잘못된 요청
- 5XX: 서버쪽 오류로 인한 상태코드
✔︎ 참고