본문 바로가기
* IT/Dictionary

큰 그림과 단계별로 이해하는 API, Rest(ful) API, SDK 개념

by codinguser 2020. 12. 25.

큰 그림과 단계별로 이해하는 API, Rest(ful) API, SDK 개념
클라이언트와 서버

 

 

 

API, Rest(ful) API, SDK가 무엇인지 정립해서 글을 작성한다.

 

깊고 심화된 내용보다 전체 그림을 이해하도록 작성하였다.

 

각 각을 이해하기 위해서는 위의 그림을 참고하면서 읽어나가면서 더욱 도움이 될 것이다.

 

 

 

 

 

 

 

 

Contents


* API란 무엇인가?

 

ㄴ 왜 API란 개념이 나왔을까?

 

 

* REST API란 무엇일까?

 

ㄴ 왜 REST란 말이 붙게 되었을까?

 

ㄴ 어떻게 표현할까?

 

* SDK란 무엇일까?

 

ㄴ 왜 SDK란 개념이 나왔을까?

 

 

 

 

 

 

 

 

 

API란?


Application

Programming

Interface

 

의 줄임말로 사전적 용어 그대로 애플리케이션 프로그래밍 인터페이스를 의미한다.

 

단어적 사전에 모든 요소가 담겨 있는데 Interface라는 말이 제일 핵심이다.

 

기본적으로 클라이언트와 서버 간의 통신을 하기 위해선 서로 상호작용을 해야 하는데.

 

서버 입장에서 생각해 보았을 때 클라이언트가 어떤 요청이 들어왔으면, 그 요청에 맞게끔 서비스를 Response를 해줘야 한다.

 

이렇게 클라이언트가 어떠한 요청을 보낼 때 이해할 수 있는 하나의 중간 다리가 필요한데 주로 서버 개발자가 서버 쪽에 배포해놓은 하나의 고객센터 같은 곳을 API라고 한다.

 

 

 

 

 

 

 

 

 

 

REST(ful) API란?


Representational(대표적인)

State(상태)

Transfer(전송)

API

 

의 줄임말로, Rest 한 방식을 따르는 API를 의미한다.

 

API의 의미는 위에서 다루었으니, Rest한 방식이라는 말을 짚고 넘어가자

 

 

Representational(대표)라는 말의 의미는 수없이 많은 것들 중 기준이 되는 하나라는 뜻이다. 

 

하나의 상황을 살펴보자

 

클라이언트가 어떤 요청이 들어올 때 요청의 종류는 크게 4가지이다.

 

Create - 게시판에 글을 올릴걸 요청할게요

Read - 게시글을 읽기 위해 게시글 좀 요청할게요

Update - 게시글을 업데이트를 요청할게요

Delete - 게시글 지워주는 요청할게요

 

 

하지만 실제로 서버 개발자가 각 위의 메서드를 따르지 않아도 각 각 다르게 개발을 할 수가 있다.

사용자를 생성할 때 Read 메서드를 받아버리고 사용자 개인정보 수정을 할 때 Delete를 받게 된다면 어떻게 될까? 중구난방이 돼버린다.

 

그래서 다른 방식으로 개발하면 복잡해지기 때문에 메서드를 이용하여 하나의 대표적인 표준체계로 지정한것이다.

 

C : POST

R : GET

U : PUT(전체) / PATCH(일부)

D : DELETE

 

 

 

 

 

 

 

 

 

 

 

 

 

그렇다면 어떻게 표현될까?


 

 

*클라이언트 - > 서버

    사용자 회원등록을 하고 싶습니다.

    id는 user1, 비밀번호는 123으로 하고 싶습니다.

 

 

    URI : htpps://www.hello.com/users

    HTTP Method : POST

    PayLoad: {"id": "user1", "password": "123"}

 

 

 

Rest(ful) API의 구성요소는 위에서 보이는 것처럼 아래로 정리할 수 있다.

 

1. 자원(Resource)

: URI를 이용한 표현

 

2, 행위(Verb)

: HTTP 메서드 사용

 

3. 표현(Representations)

 

 

 

 

 

 

 

 

 

 

SDK란?


Software

Development

Kit

의 줄임말이다. Kit라는 말이 핵심인데 키트는 어떠한 도구들을 담아 놓은 하나의 연장통 같은 것이다.

 

그러한 연장통 같은 것들을 소프트웨어 발전을 위해 담아 놓은 것인데

 

예를들어

 

마스크 재고 현황을 파악하는 지도를 만들고 싶다.

그렇다면 지도를 제작해야 하는데 이 지도를 만들기에는 많은 시간, 자원이 들어간다.

 

그렇다면 방법은 뭐가 있을까?

 

누군가 만들어 놓은 지도 애플리케이션을 가져다 쓰는 것이다.

 

 

 

내 소프트웨어(요청) ->구글 지도 SDK

                           <-(응답)  

 

 

구글에서 만들어 놓은 지도와 통신하기 위해서는 구글에서 통신하는 방식(API)을 따라야 한다.

 

SDK는 지도 기능과 + 지도의 특정 기능에 응답해주는 API를 담고 있는 것이다.

 

SDK = API를 포함하고 있는 활용 가능한 소프트웨어 

 

 

댓글