API

Part 3. API๋Š” ๋ฌด์—‡์ธ๊ฐ€

๋ณธ ํฌ์ŠคํŒ…์€ ํŒจ์ŠคํŠธ์บ ํผ์Šค(FastCampus)์˜ ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋ง ์˜ฌ์ธ์› ํŒจํ‚ค์ง€ Online์„ ์ฐธ๊ณ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

1. API ์ •์˜

  • Application Programming Interface
  • ๋‘ ๊ฐœ์˜ ์‹œ์Šคํ…œ์ด ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค(๋ฐ์ดํ„ฐ ์ฃผ๊ณ  ๋ฐ›๊ธฐ!)
  • ์ผ๋ฐ˜์ ์œผ๋กœ API๋Š” REST API๋ฅผ ์ง€์นญํ•œ๋‹ค.
  • ex) Web API: ์›น์„ ํ†ตํ•ด ์™ธ๋ถ€ ์„œ๋น„์Šค๋“ค๋กœ๋ถ€ํ„ฐ ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” API

2. API ์ ‘๊ทผ ๊ถŒํ•œ

  • Authentication: Identity๊ฐ€ ๋งž๋‹ค๋Š” ์ฆ๋ช…
  • Authorization: API๋ฅผ ํ†ตํ•œ ์–ด๋– ํ•œ ์•ก์…˜์„ ํ—ˆ์šฉ
  • ๋‘˜์€ ๋‹ค๋ฅด๋‹ค! Athentication์„ ํ•˜์˜€๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ Authorization์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค!
  • Security ์ด์Šˆ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค.
API Key?
  • ๋ณดํ†ต Request URL ํ˜น์€ Request Header์— ํฌํ•จ๋˜๋Š” ๊ธด ์ŠคํŠธ๋ง
  • ex) Google Maps Platform > Geocoding API
    • https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY
    • ์—ฌ๊ธฐ์„œ YOUR_API-KEY ์ด๋ถ€๋ถ„์„ ์ฑ„์›Œ์ฃผ์ง€ ์•Š์œผ๋ฉด, request denied๊ฐ€ ๋œจ๊ฒŒ ๋œ๋‹ค.
Baisc Auth
  • username:password์™€ ๊ฐ™์€ credential์„ Base64๋กœ ์ธ์ฝ”๋”ฉํ•œ ๊ฐ’์„ Request Header ์•ˆ์— ํฌํ•จ
OAuth 2.0
  • End User <=> My App <=> Server(ex. Spotify)
  • (1) App์—์„œ End Userํ•œํ…Œ ์ƒ์ผ, ์ „ํ™”๋ฒˆํ˜ธ, ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ์™€ ๊ฐ™์€ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ๊ฐ€๋Š” ๊ฒƒ์— ๋Œ€ํ•ด์„œ ๋™์˜๋ฅผ ๋ฐ›๋Š”๋‹ค.
  • (2) ๋™์˜์„œ๋ฅผ ๋ฐ›์•„์™”์œผ๋‹ˆ Serverํ•œํ…Œ API ์š”์ฒญ์„ ํ•˜๊ณ  ๊ทธ์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์š”๊ตฌํ•œ๋‹ค.

3. Spotify Web API

  • Spotify ์ง์ ‘ ๋ฐฉ๋ฌธํ•ด๋ณด๊ธฐ

4. Endpoints & Methods

  • Resource: API๋ฅผ ํ†ตํ•ด ๋ฆฌํ„ด๋œ ์ •๋ณด
  • Endpoint: Resource ์•ˆ์—๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ Endpoints๊ฐ€ ์กด์žฌ
  • Method: ์ž์› ์ ‘๊ทผ์— ํ—ˆ์šฉ๋œ ํ–‰์œ„(GET, POST, PUT, DELETE)
Method Action
GET ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋ฅผ ์กฐํšŒํ•˜๊ณ  ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
HEAD ์‘๋‹ต์ฝ”๋“œ์™€ HEAD๋งŒ ๊ฐ€์ ธ์˜จ๋‹ค.
POST ์š”์ฒญ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
PUT ์š”์ฒญ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค.
DELETE ์š”์ฒญ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•œ๋‹ค.

5. Parameters

  • Parameters: Endpoint๋ฅผ ํ†ตํ•ด Requestํ•  ๋•Œ ๊ฐ™์ด ์ „๋‹ฌํ•˜๋Š” ์˜ต์…˜๋“ค
Type ๋‚ด์šฉ
Header Request Header์— ํฌํ•จ. ์ฃผ๋กœ Authorization์— ๊ด€๋ จ
Path Query String(?) ์ด์ „์— Endpoint Path ์•ˆ์— ํฌํ•จ.
ex) id
Query String Query STring(?) ์ดํ›„์— ํฌํ•จ.
ex) ?utm_source=facebook&…
Request Body Request Body ์•ˆ์— ํฌํ•จ. ์ฃผ๋กœ JSON ํ˜•ํƒœ