[๋„คํŠธ์›Œํฌ] REST API๋ž€?

    - REST API

    - REST API๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๋ฐฉ๋ฒ•

    REST API๋ž€?  ์‰ฝ๊ฒŒ ๋งํ•ด REST๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ API ์ด๋‹ค.


    ๋จผ์ € REST์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž 

     

    REST ๋ž€?

    Representationnal State Tranfer์˜ ์•ฝ์–ด๋กœ '์ž์›์„ ์ด๋ฆ„์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ํ•ด๋‹น ์ž์›์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ชจ๋“  ๊ฒƒ' ์„ ์˜๋ฏธํ•œ๋‹ค. 

    1. HTTP URI(Uniform Resource Identifier)๋ฅผ ํ†ตํ•ด ์ž์›(Resource)์„ ๋ช…์‹œ

    2. HTTP Method(POST, GET, PUT, DELETE, PATCH๋“ฑ)๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์ž์›(URI)์— ๋Œ€ํ•œ CRUD Operation์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ ์„ ์˜๋ฏธํ•œ๋‹ค.

     

    ์—ฌ๊ธฐ์—์„œ, CRUD Operation์ด๋ž€? 

    CRUD๋Š” ๋Œ€๋ถ€๋ถ„ ์ปดํ“จํ„ฐ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๊ฐ€์ง€๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์ธ Create, Read, Update, Delete๋ฅผ ๋ฌถ์–ด์„œ ์ผ์ปซ๋Š” ๋ง์ด๋‹ค.

     

    REST์˜ ํŠน์ง• 

    • Server-Client (์„œ๋ฒ„-ํด๋ผ์ด์–ธํŠธ ๊ตฌ์กฐ)
    • Stateless(๋ฌด์ƒํƒœ)
    • Cacheable(์บ์‹œ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ)
    • Layered System(๊ณ„์ธตํ™”)
    • Uniform Interface(์ธํ„ฐํŽ˜์ด์Šค ์ผ๊ด€์„ฑ) 

    REST์˜ ์žฅ์ 

    1. HTTP ํ”„๋กœํ† ์ฝœ์˜ ์ธํ”„๋ผ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ REST API ์‚ฌ์šฉ์„ ์œ„ํ•œ ๋ณ„๋„์˜ ์ธํ”„๋ผ๋ฅผ ๊ตฌ์ถ•ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. 

    2. HTTP ํ”„๋กœํ† ์ฝœ์˜ ํ‘œ์ค€์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ถ”๊ฐ€์ ์ธ ์žฅ์ ์„ ํ•จ๊ป˜ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. 

    3. HTTP ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ฅด๋Š” ๋ชจ๋‘ ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 

    4. Hypermedia API์˜ ๊ธฐ๋ณธ์„ ์ถฉ์‹คํžˆ ์ง€ํ‚ค๋ฉฐ ๋ฒ”์šฉ์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค. 

    5. ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ์—ญํ• ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•œ๋‹ค. 

    6. ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์„œ๋น„์Šค ๋””์ž์ธ์—์„œ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ์ตœ์†Œํ™”ํ•œ๋‹ค. 

    7. REST API ๋ฉ”์‹œ์ง€๊ฐ€ ์˜๋„ํ•˜๋Š” ๋ฐ”๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ด๋ฏ€๋กœ ์˜๋„ํ•˜๋Š” ๋ฐ”๋ฅผ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.

    REST์˜ ๋‹จ์ 

    1. HTTP Method ํ˜•ํƒœ๊ฐ€ ์ œํ•œ์ ์ด๋‹ค. 

    2. ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ˜ธํ™˜์ด ๋˜์ง€ ์•Š์•„ ์ง€์›ํ•˜์ง€ ๋ชปํ•˜๋Š” ๋™์ž‘์ด ๋งŽ๋‹ค. 

    3. ํ‘œ์ค€์ด ์กด์žฌํ•˜์ง€ ์•Š์•„ ์ •์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค. 

    4. ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ํ…Œ์ŠคํŠธํ•  ์ผ์ด ๋งŽ์€ ์„œ๋น„์Šค๋ผ๋ฉด ์‰ฝ๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ๋Š” URL๋ณด๋‹ค Header ์ •๋ณด์˜ ๊ฐ’์„ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ „๋ฌธ์„ฑ์ด ์š”๊ตฌ๋œ๋‹ค.


     

    REST API

    : RestAPI ๋ž€ Rest์˜ ์›๋ฆฌ๋ฅผ ๋”ฐ๋ฅด๋Š” API์ด๋‹ค. 

    ์ด RestAPI๋ฅผ ์ž˜ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ง€์ผœ์•ผํ•˜๋Š” ๊ทœ์น™์ด ์กด์žฌํ•œ๋‹ค.

    REST API ์„ค๊ณ„

    1. URI๋Š” ๋™์‚ฌ๋ณด๋‹ค๋Š” ๋ช…์‚ฌ, ๋Œ€๋ฌธ์ž๋ณด๋‹ค๋Š” ์†Œ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. 

    2. ๋งˆ์ง€๋ง‰์— ์Šฌ๋ž˜์‹œ(/)๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค. 

    3. ์–ธ๋”๋ฐ” ๋Œ€์‹  ํ•˜์ดํ”ˆ์„ ์‚ฌ์šฉํ•œ๋‹ค. 

    4. ํŒŒ์ผํ™•์žฅ์ž๋Š” URI์— ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค. 

    5. ํ–‰์œ„๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค. 


    ๊ทธ๋ ‡๋‹ค๋ฉด, ์ด์ œ RESTful ์— ๋Œ€ํ•ด ์ œ๋Œ€๋กœ ๊ณต๋ถ€ํ•ด๋ณด์ž

    RESTful

    ๋”๋ณด๊ธฐ

    RESTful์ด๋ž€ Rest์˜ ์›๋ฆฌ๋ฅผ ๋”ฐ๋ฅด๋Š” ์‹œ์Šคํ…œ์ด๋‹ค. ํ•˜์ง€๋งŒ REST๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•ด์„œ, ๋‹ค RESTful์€ ์•„๋‹ˆ๋‹ค.

    ์œ„์—์„œ ๋งํ•œ REST API์˜ ์„ค๊ณ„ ๊ทœ์น™์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ง€ํ‚จ ์‹œ์Šคํ…œ์„ RESTful ์ด๋ผ๊ณ  ํ• ์ˆ˜ ์žˆ๋‹ค. 

    ๋Œ“๊ธ€