오늘 친구와 옛날 이야기를 하다가 입사 한 달차때 일화가 생각났는데 둘 다 너무 웃겨서 한참을 ㅋㅋㅋㅋ만 한참 두드렸어요🤣
부서배치 받고 첫 개발과제를 받았는데 사수분이 "API 호출부분부터 보시면 될 거예요." 라고 하셨어요.
지금생각해보면 아-주 친절하게 알려주셨는데 고등학교 때 배운걸 바로 까먹은건지,, "API...뭔 지는 아는데..뭔 지 모르겠다.."
바로 친구에게 SOS쳤는데 저와 별다를 것 없는 학교 생활을 함께한 친구가 해준 대답은
"/(슬래시) 이렇게생긴거..그게 API일걸?.."
그 날 이클립스에서 ctrl+h로 /만 한참을 검색한 저인데 어떻게 밥벌이를 하고있네요ㅋㅋ
아무튼! 생각난김에 API에 대해 정리해보자 합니다😉
어플리케이션의 상호작용을 돕는 매개체 라고 한마디로 정의할 수 있습니다.
여기서 '인터페이스'는 두 프로그램간의 '계약' 개념과 유사합니다.
요청(Request)과 응답(Response)을 사용해서 통신하는 방법을 정의해둔 것!
이것을 API라고 보면 됩니다.
예를 들어서 치킨을 배달시키려고 한다고 가정해봅니다.
1) 배달 어플을 켜서 치킨을 주문한다.
2) 가까운 치킨집에가서 포장해온다.
결국 치킨을 주문하는건 똑같지만 주문 과정에서 각각 아래와 같은 매개체를 통한다는 차이가 있습니다.
1) 배달어플
2) 점원
이렇게 나와 치킨을 연결해주는 인터페이스 역할을 API가 해준다고 보시면 됩니다 .
치킨을 주문하려면 맛, 결제방법 등을 선택해야하겠죠?
원활한 통신을 위해서는 요청과 응답에 필요한 방법,값 등을 정의해야합니다.
마치 계약 처럼요 🍗
API는 프로그램/클라이언트(나)로 부터 계약된 방식에 따른 요청을 받아
어플리케이션/서버(배달어플/점원)과 상호작용하여 응답(치킨)을 제공합니다.
API는 DB에 저장된 정보에 대한 접근성을 관리합니다. 또 서버에서 DB에 접근할 때 key인증 등을 통해서 보안을 설정할 수도 있습니다. 아무 서버에서나 데이터에 접근하면 안되니까요!
우리가 카톡창에 메세지를 입력하고 전송버튼을 누를 때, 복잡한 코드를 직접입력해야 한다면 아마 우린 다시 아날로그시대로 돌아가서 편지를 쓰게 될거예요 :) API는 어플리케이션에서 사용자의 동작을 서버가 알아들을 수 있는 형식으로 요청해주는 통신망의 역할을 합니다.
스마트폰, 컴퓨터, 패드, 워치 등등 우리는 아주 다양한 형태로 어플리케이션을 사용하고 있습니다. API는 다른 기기와 운영체제에서도 동일하게 동작할 수 있도록 모든 접속을 표준화하는 역할을 해줍니다.
사용하는 곳에 따라서 정책별로 종류를 나눌 수 있어요.
크게 아래와 같이 세가지로 분류됩니다.
Partner, Public API 정책은 수익을 창출하고, 브랜드 인지도를 향상시키기도 합니다.
Simple Object Access Protocol의 약어로, 다른 언어로 다른 플랫폼에서 빌드된 애플리케이션이 통신할 수 있도록 설계된 최초의 표준 프로토콜입니다. XML 형식을 사용하고, 그 자체의 프로토콜이기 때문에 오버헤드의 발생확률이 있습니다.
UDDI : Universal Description Descovery Intergration
- 서비스의 CRUD를 관리하는 전역적 저장소(공개 레지스트리)
- 모든 데이터가 XML형태로 표현되고, 데이터&오퍼레이션이 WSDL로 정의되면 UDDI에 등록되어 누구라도 서비스를 찾을 수 있도록 공개됨
- 등록(Publish) - 탐색(Find) - 바인딩(Bind)
WDSL : Web Service Description Language
- 웹 서비스의 구체적인 내용(서비스의 제공장소, 메시지 포맷, 프로토콜 등)을 기술함
Representational State Transfer의 약어로, ROA 설계의 Resource를 HTTP Method로 처리하도록 설계된 인터페이스입니다. ROA(Resource Oriented Architecture)는 Resource가 설계의 중심에 있는 S/W 아키텍처를 의미합니다. REST의 경우 SOAP과 달리 프로토콜이 아닌 가이드라인에 가깝기 때문에 이러한 권장 사항의 구현 여부는 개발자에게 달려 있습니다.
Resource(자원) : URI
- Server에 존재하며 모든 자원에 할당된 고유한 ID
- Client는 URI를 통해 Server에 요청함
Verb(행위) : HTTP Method
- HTTP Method와 동일함
- GET / POST / PUT / DELETE
Representation(표현)
- JSON(가장 많이 씀), XML, TEXT, RSS 등 여러 형태로 Response를 보냄
REST를 REST 답게 쓰기 위한 가이드라인 이라고 볼 수 있지만, 여러 개발자들의 비공식적 의견 제시로 만들어졌다. 목적은 이해하기 쉽고 사용하기 쉬운 것에 있으며, 포인트는 자원(resource)에 대해 꼭 '복수형태'를 취한다는 것이다.
둘 중 뭐가 더 우수하다는 것은 없고 SOAP API는 금융권 서비스 처럼 보안수준이 높아야 하는 경우에, REST API는 확장성이 크거나 분산시스템에 용이합니다. 사실 프로토콜/API의 차이도 존재하기 때문에 제대로 된 비교가 힘들기도 합니다. 결론적으로는 서비스의 특성에 따라 선택하는 것이 현명한 방법 🤓