상황: 고객이 식당(서버)에 들어가 메뉴판(API 문서)을 보고 정확하게 주문(요청)을 한다.
고객: “김치찌개 하나 주세요.”
점원: “네, 알겠습니다.”
(조리 후 음식 제공)
점원: “김치찌개 나왔습니다.”
→ 요청 형식도 정확했고, 식당도 해당 요청을 이해하고 정확한 응답(음식)을 제공함.
클라이언트가 올바른 형식과 내용으로 요청했고, 서버(API)가 정상적으로 처리해서 원하는 데이터를 반환한 상황이다. (200 OK)
상황: 고객이 메뉴판에 없는 비관련 아이템을 주문하거나, 전혀 이해할 수 없는 요청을 함.
고객: “노트북 하나 주세요.”
점원: “…저희는 식당인데요. 음식만 주문 가능합니다.”
→ 요청 대상이 잘못되어 서버(식당)가 이해할 수 없음.
클라이언트가 존재하지 않는 리소스를 요청하거나, 요청 형식이 부정확해서 서버가 요청을 처리할 수 없는 상황이다. (400 Bad Request, 404 Not Found)
상황: 고객은 정상적으로 주문했지만, 식당의 내부 문제로 응답이 잘못됨.
고객: “김치찌개 하나 주세요.”
점원: “네, 알겠습니다.”
(한참 후)
점원: “여기 된장찌개 나왔습니다.”
→ 요청은 맞았지만, 내부 처리 과정에서 오류가 발생해 엉뚱한 응답이 옴.
클라이언트는 올바른 요청을 했지만, 서버가 내부 오류를 일으켰거나 응답 처리 중 문제가 발생해 잘못된 데이터를 반환한 상황이다. (500 Internal Server Error 등)
소프트웨어/시스템이 다양한 방식(프로그래밍 가능한)으로 상호작용(데이터를 주고,받고,해석) 하기 위해서 만든 인터페이스(접점)이다. 동시에, 상호작용을 위해서 지켜야 하는 규칙을말한다.
더 정확하게, 실천적으로는 클라이언트트가 요청하고 서버가 응답하는데 필요한, 요청과 응답의 형식에 대한 약속이다.
API는 제공자가 규칙을 정하고, 클라이언트는 규칙을 따른다. API는 주고 받고자하는 데이터(리소스)가 있다. 어떤 데이터를 줄지는 API 제공자가 정한다. 클라이언트는 무엇을 원하는지 요청을 한다.
리소스의 제공자가 규칙을 정하기 때문에 보통 서버 개발자가 정의한다. 하지만, API를 사용하고자 하는 쪽의 편의도 중요하기 때문에 클라이언트의 사용성, 의견 등이 반영되어야 한다.
API는 기본적으로 컴퓨터 사이의 의사소통을 수월하게 하기 위해서 만들어진 것이지만 API 제공자와 사용자 사이의 의사소통이기도 하다. 만드는 쪽도, 사용하는 쪽도 모두 기술과 사람을 이해해야 좋은 API를 만들 수 있고, API를 잘 사용할 수 있다.
모바일 앱에서 고객이 쇼핑을 하기 위해서는 상품 리스트를 받아와야 한다.
상품리스트를 조건에 따라서 10개씩 가져오는 API가 필요하다.
사내에서 주기적으로 협업을 하는데 매번 엑셀파일로 데이터를 주고 받으니까 일이 지연되고 파일관리의 어려움이 있다. 그때 그때 데이터를 볼 수 있으면 좋겠다. > API 로 만들어서 필요할 때마다 조회.
고객사가 우리 광고시스템에 등록할 광고 이미지를 매번 이미지로 전달했다. 고객사가
1000개가 넘으니까 메일함 관리도 어렵고 실수도 잦아진다.
메일이 아닌 API를 통한 광고 등록을 요청한다면 관리도 쉽고 실수를 줄일 수 있다.
자원을 이름으로 구분하고, 자원의 상태를 주고받는 방법의 API다.
HTTP프로토콜을 기반으로 웹의 자원을 다양하게 활용할 수 있다.
기본규칙
자유도가 높다.
자유도가 높다보니, RESTful 한 것이 무엇이냐? 라는 논의가 있다.
누구나 활용할 수 있도록 공개된 API를 말한다. 외부 소프트웨어 개발자가 빠르게 시스템을
통합할 수 있도록 하기위해서 만든다.
사례