yesolz 2024. 8. 28. 23:30
728x90

 

 

API (Application Programming Interface)

์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์— ์„œ๋กœ ํ†ต์‹ ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ทœ์น™ ์ง‘ํ•ฉ!

 

Interface

์ธํ„ฐํŽ˜์ด์Šค๋ž€? ํ•˜๋‚˜์˜ ์‚ฌ๋ฌผ์ด ๋‹ค๋ฅธ ์‚ฌ๋ฌผ๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. 

CLI, GUI์—์„œ ์‚ฌ์šฉํ•˜๋“ฏ! ์ธํ„ฐํŽ˜์ด์Šค๋Š” '๋งค๊ฐœ์ฒด'์˜ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„๋‹ค.

 

REST API

REST API ๋Š” REST์›์น™์„ ๋”ฐ๋ฅด๋Š” API, HTTP ๊ทœ์•ฝ์„ ์ž˜ ๋”ฐ๋ฅธ API๋‹ค.

์•„๋ž˜์˜ ๊ธ€์— REST API์™€ URI์— ๋Œ€ํ•ด ์ƒ์„ธํžˆ ์ •๋ฆฌํ•œ ๋ฐ” ์žˆ๋‹ค.

https://yesolz.tistory.com/entry/REST-API-URI-%EC%84%A4%EA%B3%84-%EA%B7%9C%EC%B9%99

 

REST API URI ์„ค๊ณ„ ๊ทœ์น™

API ๋„ค์ด๋ฐ์„ ํ•˜๋‹ค๊ฐ€ ๊ณ ๋ฏผ์ด ์ƒ๊ฒผ๋‹ค. [PUT] /urls/{id}/move๊ณผ [PUT] /urls/move/{id} ์ค‘ ์–ด๋–ค ๊ฒŒ ๋” ๋‚˜์€์ง€ ๋ง์ด๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๊ตฌ๊ธ€๋ง์„ ํ•˜๋‹ค๊ฐ€, REST API URI๋ฅผ ๋””์ž์ธํ•˜๋Š” ๊ทœ์น™ ํ˜น์€ ์ปจ๋ฒค์…˜์ด ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„

yesolz.tistory.com

REST API vs RESTful API?
RESTful API๊ฐ€ REST ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋” ์ถฉ์‹คํžˆ ์™„๋ฒฝํ•˜๊ฒŒ ๋”ฐ๋ฅธ API์ž„์„ ๊ฐ•์กฐํ•˜๋Š” ํ‘œํ˜„์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
์ฆ‰, RESTful API ⊆ REST API 

 

 

HTTP method

  • ์ƒ์„ฑ(=๋“ฑ๋ก): POST
  • ์กฐํšŒ: GET
  • ์ˆ˜์ •: PUT(๋ฎ์–ด์“ฐ๊ธฐ) / PATCH(๋ถ€๋ถ„ ์ˆ˜์ •)
  • ์‚ญ์ œ: DELETE
  • HEAD, OPTIONS, CONNECT, TRACE - ๋ฐ์ดํ„ฐ ์™ธ์˜ ๊ฒƒ๋“ค์— ์‚ฌ์šฉ.

 

 

REST API URL ๊ทœ์น™

  • ๋Œ€๋ฌธ์ž x, ์†Œ๋ฌธ์ž o
  • ์–ธ๋”๋ฐ”(_) x, ํ•˜์ดํ”ˆ(-) o
  • ๋งˆ์ง€๋ง‰์— / ํฌํ•จ x
  • ํ–‰์œ„๋‚˜ ๋ชฉ์ ์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค
  • ํŒŒ์ผ ํ™•์žฅ์ž ํฌํ•จ x
  • ๋ณต์ˆ˜ํ˜•์„ ์“ด๋‹ค

 

์ด ์ค‘ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„ ๋ช‡ ๊ฐœ๋งŒ ์ƒ์„ธํžˆ ์ •๋ฆฌํ•ด๋ณด๊ฒ ๋‹ค!

 

ํ–‰์œ„๋‚˜ ๋ชฉ์ ์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค

REST API์˜ URL์€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

์ด ์›์น™์— ๋”ฐ๋ผ, URL์€ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ํ–‰์œ„(ex. create, delete, update)๋‚˜ ๋ชฉ์ (ex. save, download)๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค. 

์ด๋Ÿฌํ•œ ํ–‰์œ„๋‚˜ ๋ชฉ์ ์€ HTTP ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œํ˜„ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

HTTP ๋ฉ”์„œ๋“œ๋Š” ์ด๋ฏธ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ํ–‰์œ„๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, URL์— ํ–‰์œ„๋ฅผ ํฌํ•จํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

  • ์ž˜๋ชป๋œ ์˜ˆ์‹œ: /create-user
  • -> /users๋กœ ํ•˜๊ณ , HTTP POST ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋œ๋‹ค. 

 

ํŒŒ์ผ ํ™•์žฅ์ž ํฌํ•จ x

์‚ฌ์šฉ์ž ๋ชฉ๋ก์„ JSON ํ˜•์‹์œผ๋กœ ์ œ๊ณตํ•˜๋Š” API๋ฅผ /users.json ํ˜•์‹์œผ๋กœ ์ œ๊ณตํ•˜๋ฉด ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ๊นŒ?

-> URL์ด ํŠน์ • ํ˜•์‹(JSON)์— ์ข…์†์ ์ด๋‹ค. ๋งŒ์•ฝ XML ํ˜•์‹์˜ ์‘๋‹ต์„ ์š”์ฒญํ•˜๋ ค๋ฉด, ๋ณ„๋„์˜ URL(/users.xml)์„ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋ฏ€๋กœ ๋งค์šฐ ๋น„ํšจ์œจ์ ์ด๋‹ค.

REST์˜ ๊ธฐ๋ณธ ์›์น™ ์ค‘ ํ•˜๋‚˜๋Š” ๋ฆฌ์†Œ์Šค์™€ ๊ทธ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ํ‘œํ˜„(ํ˜•์‹)์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ํŒŒ์ผ ํ™•์žฅ์ž๋ฅผ ํฌํ•จํ•˜๋ฉด ๋ฆฌ์†Œ์Šค์˜ ํ‘œํ˜„ ๋ฐฉ์‹์ด URL์— ๊ณ ์ •๋˜์–ด ๋ฒ„๋ฆฐ๋‹ค. 

 

๋ฐ์ดํ„ฐ ํ˜•์‹์€ URL์ด ์•„๋‹Œ HTTP ํ—ค๋”๋ฅผ ํ†ตํ•ด ์ง€์ •๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ํด๋ผ์ด์–ธํŠธ๋Š” Accept ํ—ค๋”๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์—๊ฒŒ ์–ด๋–ค ํ˜•์‹์˜ ์‘๋‹ต์„ ์›ํ•˜๋Š”์ง€ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. 

์œ„์˜ ์˜ˆ์‹œ๋ฅผ ์ด์–ด์„œ ๋“ค์–ด๋ณด๋ฉด,

์š”์ฒญ์€ GET /users๋กœ ํ•˜๋˜

ํ—ค๋”์— Accept: text/html, Accept: application.json ๋“ฑ์„ ์ด์šฉํ•˜์—ฌ

์„œ๋ฒ„์— ์–ด๋–ค ํ˜•์‹์˜ ์‘๋‹ต์„ ์›ํ•˜๋Š”์ง€ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. 

 

๋ณต์ˆ˜ํ˜•์„ ์‚ฌ์šฉํ•œ๋‹ค

REST API ์—์„œ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒฝ๋กœ์— ๋ณต์ˆ˜ํ˜• ๋ช…์‚ฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ด๋Š” ํ•ด๋‹น ๊ฒฝ๋กœ๊ฐ€ ํŠน์ • ๋ฆฌ์†Œ์Šค ์ง‘ํ•ฉ(collection)์„ ๋‚˜ํƒ€๋‚ธ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด /products๋Š” ๋ชจ๋“  ์ƒํ’ˆ๋“ค์˜ ์ง‘ํ•ฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด๋‹ค.

๊ฐœ๋ณ„ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๋ ค๋ฉด, ํ•ด๋‹น ์ƒํ’ˆ์˜ ๊ณ ์œ  ์‹๋ณ„์ž(ID)๋ฅผ URL์— ์ถ”๊ฐ€ํ•˜์—ฌ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ๋„ ๊ธฐ๋ณธ ๊ฒฝ๋กœ๋Š” ๋ณต์ˆ˜ํ˜•์„ ์œ ์ง€ํ•œ๋‹ค.

 

REST API ์„ค๊ณ„ ์˜ˆ์‹œ

1. ์ƒํ’ˆ ์ „์ฒด '์กฐํšŒ' GET

/products

2. ์ƒํ’ˆ id ๊ฐœ๋ณ„ '์กฐํšŒ' GET

/products/{id}

3. ์ƒํ’ˆ id ๊ฐœ๋ณ„ '์ˆ˜์ •' PUT

/products/{id}

 

ref
https://www.cloudflare.com/ko-kr/learning/security/api/what-is-an-api/

 

REST API์˜ ์›์น™๋“ค์„ ์•Œ์•„๊ฐ€๋ฉด์„œ, ๋‹จ์ˆœํ•ด ๋ณด์ด์ง€๋งŒ ๊ทธ ์•ˆ์— ์–ผ๋งˆ๋‚˜ ํฐ ํšจ์œจ์ด ๋‹ด๊ฒจ ์žˆ๋Š”์ง€ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

์ด๋Ÿฐ ๊ทœ์น™๋“ค์„ ํ†ตํ•ด ๋ณด๋‹ค ํšจ์œจ์ ์ด๊ณ  ๊ฒฌ๊ณ ํ•œ API ์„ค๊ณ„์— ๊ธฐ์—ฌํ•˜๊ณ  ์‹ถ๋‹ค.

728x90