네트워크
API 란?
SH.DevBlog
2023. 11. 10. 14:47
# API 정의
- 두 서비스가 서로 통신할 수 있는 방법이다.
- 예시) 휴대폰 날씨 앱에서 기상청 시스템과 통신하여 날씨 정보를 가져오는 것
# API 종류
- SOAP API
- 클라이언트와 서버가 XML을 사용하여 통신하는 방식
- 과거에 많이 사용되었으며 유연성이 많이 떨어진다.
- RPC(Remote Procedure Call) API
- 원격 프로시저 호출방식
- RPC API를 사용하면 개발자가 외부 서버의 원격 함수를 마치 해당 소프트웨어 로컬에 있는 것처럼 직접적으로 호출할 수 있다.
- 장점
- 직관적이고 단순한 상호작용 방식을 지원한다.
- RPC는 기능을 추가하기 쉽다. API 연동이 필요한 경우 단순히 end point만 설정해주면 된다.
- 다양한 언어를 가진 환경에서 쉽게 확장 가능
- 단점
- RPC는 기반 시스템과의 결합도가 높다.
- 호출 실행과 반환 시간이 보장되지 않는다.
- Websocket API
- WebSocket API는 클라이언트 앱과 서버 간의 양방향 통신을 지원
- 연결된 상태를 유지하기 때문에 그에 따른 리소스가 든다.
- 연결된 상태가 끊겨졌을 때의 예외처리를 해줘야한다.
- REST API
- REST를 기반으로 만들어진 API
- 클라이언트가 서버에 요청을 데이터로 전송합니다.
- 서버가 클라이언트의 요청을 받고 이에 따른 비즈니스를 수행하여 결과를 반환하는 구조
# REST 란?
- HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고 HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해 해당 자원에 대한 행위를 표현하는 것이다.
장점
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
- Client - Server 구조 이므로 역할과 책임이 명확하다.
- REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
단점
- 표준이 자체가 존재하지 않아 정의가 필요하다.
- HTTP Method 형태가 제한적이다.
# REST API 설계 예시
- URI는 동사보다는 명사를, 대문자보다는 소문자를 사용하여야 한다.
- Bad Example http://khj93.com/Running/
- Good Example http://khj93.com/run/
- 언더바 대신 하이폰을 사용한다.
- Bad Example http://khj93.com/test_blog
- Good Example http://khj93.com/test-blog
- 행위를 포함하지 않는다.
- Bad Example http://khj93.com/delete-post/1
- Good Example http://khj93.com/post/1
- 파일확장자는 URI에 포함하지 않는다.
- Bad Example http://khj93.com/photo.jpg
- Good Example http://khj93.com/photo
- 마지막에 슬래시 (/)를 포함하지 않는다.
- Bad Example http://khj93.com/test/
- Good Example http://khj93.com/test