개발자와 협업하기 위한 api의 이해 - api를 준비하는 금성인을 위한 안내서

24
API 준비하는 금성인을 위한 안내서 장동수 / 아임인 LAB / 개발실 / KTH 1

Upload: dongsu-jang

Post on 01-Nov-2014

3.213 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

API를 준비하는 금성인을 위한 안내서장동수 / 아임인LAB / 개발실 / KTH

1

Page 2: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

눈에 보이는 API (1)

2

Page 3: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

눈에 보이는 API (2)

3

Page 4: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

눈에 보이는 API (3)

그러나...

그것은...

API 문서일 뿐...

눈에 보이는 것이...

API의 전부는 아니랍니다...

OTL

4

Page 5: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

API란?Application Programming Interface

Application Program

a program that gives a computer instructionsthat provide the user with toolsto accomplish a task

Interface: inter + face; 얼굴과 얼굴 사이?!

a surface forming a common boundarybetween two things

5

Page 6: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

장치와 장치 사이

6

Page 7: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

사람과 사람 사이

7

Page 8: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

사람과 프로그램 사이

8

Page 9: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

프로그램과 프로그램 사이(응용) 프로그램

API

(시스템) 프로그램

9

Page 10: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

서비스와 서비스 사이(매시업) 서비스

Open API

(플랫폼) 서비스

10

Page 11: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

화성인 용어 사전 (1)

라이브러리(Library)

툴킷(Toolkit)

프레임웍(Framework)

11

Page 12: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

화성인 용어 사전 (2)

프로시져 호출(Procedure Call)

시스템 호출(System Call)

프로세스간 통신(IPC; Inter-process Communication)

로컬 프로시져 호출(LPC; Local Procedure Call)

원격 프로시져 호출(RPC; Remote Procedure Call)

12

Page 13: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

화성인 용어 사전 (3)프로토콜(Protocol)

TCP/IP, Socket, HTTP

Open API, Cross-Domain

REST, JSON, JSONP

SOAP, XML

Authentication & Authorization, OAuth

13

Page 14: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

REST+JSON vs SOAP+XML{ "results" : [ { "address_components" : [ { "long_name" : "1600", "short_name" : "1600", "types" : [ "street_number" ] }, { "long_name" : "Amphitheatre Pkwy", "short_name" : "Amphitheatre Pkwy", "types" : [ "route" ] }, { "long_name" : "Mountain View", "short_name" : "Mountain View", "types" : [ "locality", "political" ] }, { 14

Page 15: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

<GeocodeResponse>  <status>OK</status>  <result>   <type>street_address</type>   <formatted_address>1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA  <address_component>    <long_name>1600</long_name>    <short_name>1600</short_name>    <type>street_number</type>   </address_component>   <address_component>    <long_name>Amphitheatre Pkwy</long_name>    <short_name>Amphitheatre Pkwy</short_name>    <type>route</type>   </address_component>   <address_component>    <long_name>Mountain View</long_name>    <short_name>Mountain View</short_name>    <type>locality</type>    <type>political</type>

REST+JSON vs SOAP+XML

15

Page 16: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

크로스 도메인http://a.com http://b.com

one four

웹 브라우져

http://a.com/one

two three

Same OriginAJAX

Cross DomainAJAX

16

Page 17: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

크로스 도메인http://a.com http://b.com

one four

웹 브라우져

http://b.com/three

two three

Cross DomainAJAX

Same OriginAJAX

17

Page 18: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

OpenAPI 문서 보기(1)이름(Name)

HTTP 주소(URL, URI, ...) + 메소드(GET, POST, PUT, DELETE, ...)

요청(Request)

인자, 파라메터, Parameters, Arguments, ...

응답(Response)

반환값, 리턴값, 결과값, Result, Return, ...

18

Page 19: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

OpenAPI 문서 보기(2)

이름 요청 응답

19

Page 20: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

화성인에게 API란?외부 시스템이 내부 시스템이 제공하는 기능을 사용하기 위해 지켜야 하는 규약 & 문서

그리고, 실제로 요청을 받고 응답을 하는 시스템의 맨 바깥 계층 & 코드 덩어리

그리고, 계층을 통해 규약에 맞춰 요청을 보내고 응답을 받기 위한 코드 덩어리

20

Page 21: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

금성인에게 API란

더 큰/좋은/잘나가는/전문적인 서비스에 묻어가기

경쟁자를 파트너로 만들기

경쟁자에게 밀리지 않기

서비스 플랫폼으로 자리잡고 돈 벌기

21

Page 22: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

Putting It All Together...

아임IN 서버

아임IN안드로이드앱

아임INiOS앱

리뷰아임INPrivate

OpenAPI아임IN

OpenAPI

푸딩.투OpenAPI

장소 찾기

발도장 찍기

트위터OpenAPI

페이스북OpenAPI

발도장 공유

친구 찾기

가입/로그인

써드파티앱/매시업

아리맛

22

Page 23: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

화성인 따라잡기

“좋아요” 버튼 달기

페이스북 개발자 등록

OAuth 인증/승인

타임라인 가져오기

타임라인에 글 올리기

친구 목록 가져오기

23

Page 24: 개발자와 협업하기 위한 API의 이해 - API를 준비하는 금성인을 위한 안내서

Q&AThat’s all Folks!

24