ㆍ 리소스를 식별하기 위해 사용하는 문자열
ㆍ URL, URN을 포함하는 상위 개념임
ㆍ 리소스의 위치를 나타내는 문자열
ㆍ 리소스 식별 방법: 위치
ㆍ 리소스의 위치가 변경되면 URL도 변경되어야 함 (Ex. 페이지를 찾을 수 없습니다.)
ㆍ 프로토콜, 도메인, 포트, 쿼리 문자열로 구성됨
ㆍ 리소스의 위치는 Path(webtoon) 값까지만 알아도 알 수 있음
ㆍ tab 값에 따라 리소스 결과가 다르게 도출됨으로 Parameter(tab)은 리소스의 식별자 역할을 함
ㆍ 리소스에 이름을 부여하는 문자열
ㆍ 리소스 식별 방법: 이름
ㆍ 리소스의 위치와 상관없이 이름이 부여되기 때문에 위치가 변경되어도 리소스를 찾을 수 있음
ㆍ 프로토콜을 포함하지 않음
ㆍ Ex) urn:isbn:0-395-12356-2
ㆍ 프로그램들이 서로 상호작용하는 것을 도와주는 매개체
ㆍ 내부 코드가 어떻게 구현되었는지 몰라도 쉽게 기능을 가져와 쓸 수 있음
ㆍ Ex) <전시회 예약 프로그램>을 개발할 때 결제 기능을 직접 개발하지 않고, "카카오페이 API"를 사용할 수 있음
API는 프로그램(손님)이 요청(주문)할 수 있게 기능(메뉴)을 정리하고, 요청(주문)을 받으면 응용프로그램(요리사)와 상호작용하여 요청된 기능(메뉴)을 응답함
유형
1) private API
: 제3자에게 노출되지 않는 API. 보통 사내에서 사용함2) public API
: 모두에게 공개되는 API3) partner API
: 동의하는 특정인만 사용 가능한 API. 회사 간 데이터 공유에서 사용함
종류
ㆍ SOAP, REST, RPC 등
장점
ㆍ 개발 시간 단축, 비용 절약
: 결제 기능을 직접 만드는 것보다 이미 개발되어 있는 카카오페이 API를 사용하면 됨ㆍ 코드 작성법을 표준화하여 협업, 비즈니스 확장에 용이함
단점
ㆍ 보안 문제
: API 해킹 시 데이터 유출 사고의 원인이 됨 (DB에 접근이 가능하기 때문에)
따라서 토큰, 암호화 및 서명, 제한 등의 방법을 사용하여 API 보안에 유의해야 함
ㆍ HTTP 기반으로 자원(리소스)에 접근하는 방법
ㆍ HTTP URI로 자원을 명시할 것
ㆍ CRUD Operation을 HTTP 메서드로 나타낼 것
CRUD Operation & HTTP 메서드
1) 자원(Resource): HTTP URI
2) 자원에 대한 행위(Verb): HTTP Method
3) 자원에 대한 행위의 내용(Representations): HTTP Message Pay Load
1) 클라이언트-서버 구조
ㆍ 클라이언트는 사용자 인증, 세션 정보를 관리하고 책임짐
ㆍ 서버는 API 제공 역할을 함
ㆍ 각 역할을 확실히 구분하여 의존성을 줄임
2) 무상태성
ㆍ 상태 정보를 따로 저장하지 않아 들어오는 요청만을 단순하게 처리함
ㆍ 서비스의 자유도가 높아짐
3) 캐시 처리
ㆍ HTTP의 캐시 기능을 적용하여 대량의 요청을 효율적으로 처리함
ㆍ 캐싱을 사용해 응답 시간을 빠르게 하고 서버의 자원 이용률을 향상 시킴
4) 유니폼 인터페이스
ㆍ 특정 언어나 기술에 종속 받지 않는 특징
ㆍ HTTP를 사용하는 모든 플랫폼에서 요청 가능하게 함
5) 계층화 구조
ㆍ 클라이언트는 REST API 서버만 호출 가능
ㆍ 서버는 계층화 되어 있어 구조를 유연하게 하고 유지 보수에 용이함
6) 자체 표현 구조
: REST API 메시지만 보고도 쉽게 이해할 수 있는 구조로 이루어짐
ㆍ REST 기반으로 API를 구현한 것
ㆍ 대부분의 Open API는 REST로 구현되어 있음
1) 동사보다 명사, 대문자보다 소문자 사용할 것
(o) https://example.com/run
(x) https://example.com/Running
2) 마지막에 슬래시(/)를 포함하지 않을 것
(o) https://example.com/run
(x) https://example.com/Running/
3) 언더바(_)대신 하이폰(-)을 사용할 것
(o) https://example.com/run-test
(x) https://example.com/Running_test
4) 파일 확장자를 포함하지 않을 것
(o) https://example.com/photo
(x) https://example.com/photo.png
5) 행위를 포함하지 않을 것
(o) https://example.com/post/1
(x) https://example.com/delete-post/1
ㆍ REST의 설계 규칙을 지키며 개발한 시스템을 지칭함
ㆍ 이해하기 쉽고 용이한 REST API를 만드는 것을 목적으로 둠
참고
ㆍ https://mygumi.tistory.com/139
ㆍ https://jeongkyun-it.tistory.com/157
ㆍ https://www.youtube.com/watch?v=ckSdPNKM2pY
ㆍ https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80
ㆍ https://meetup.nhncloud.com/posts/92