Hamutaro - Hamtaro 4

Frontend/Web

[Web] RESTful API๋ž€?

carsumin 2022. 10. 14. 23:08

 

REST 

- Representational State Transfer

- API ์ž‘๋™ ๋ฐฉ์‹์— ๋Œ€ํ•œ ์กฐ๊ฑด์„ ๋ถ€๊ณผํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์ด๋‹ค.

- ๋ณต์žกํ•œ ๋„คํŠธ์›Œํฌ์—์„œ ํ†ต์‹ ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ๋‹ค.

- REST ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ์˜ ๊ณ ์„ฑ๋Šฅ ํ†ต์‹ ์„ ์•ˆ์ •์ ์œผ๋กœ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

RESTful API

โœ”๏ธ๊ฐœ๋…

- ๋‘ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์ด ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.

- ์•ˆ์ „ํ•˜๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํšจ์œจ์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ํ†ต์‹  ํ‘œ์ค€์„ ๋”ฐ๋ฅธ๋‹ค.

 

โœ”๏ธ์ž‘๋™๋ฐฉ์‹

- ์ธํ„ฐ๋„ท ๋ธŒ๋ผ์šฐ์ง•๊ณผ ๋™์ผํ•จ

 

1. client๊ฐ€ server์— ์š”์ฒญ์„ ์ „์†กํ•œ๋‹ค. API ๋ฌธ์„œ์— ๋”ฐ๋ผ server๊ฐ€ ์ดํ•ดํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์š”์ฒญ ํ˜•์‹์„ ์ง€์ •

2. server๊ฐ€ client๋ฅผ ์ธ์ฆํ•˜๊ณ  ํ•ด๋‹น ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด client์— ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

3. server๊ฐ€ ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜๊ณ  ๋‚ด๋ถ€์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

4. server๊ฐ€ client์— ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. (์‘๋‹ต์—๋Š” ์š”์ฒญ ์„ฑ๊ณต ์—ฌ๋ถ€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์ •๋ณด, client๊ฐ€ ์š”์ฒญํ•œ ๋ชจ๋“  ์ •๋ณด ํฌํ•จ๋จ) 

 

โœ”๏ธclient ์š”์ฒญ ๊ตฌ์„ฑ์š”์†Œ

๊ณ ์œ  ๋ฆฌ์†Œ์Šค ์‹๋ณ„์ž

   server๋Š” ๊ณ ์œ ํ•œ ๋ฆฌ์†Œ์Šค ์‹๋ณ„์ž๋กœ ๊ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ•จ. REST ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์œผ๋กœ URL์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹๋ณ„ํ•จ.

   URL์€ ์š”์ฒญ ์—”๋“œํฌ์ธํŠธ๋ผ๊ณ ๋„ ํ•˜๋ฉฐ client๊ฐ€ ์š”๊ตฌํ•˜๋Š” ์‚ฌํ•ญ์„ server์— ๋ช…ํ™•ํ•˜๊ฒŒ ์ง€์ •ํ•จ.

 

๋ฉ”์„œ๋“œ 

   HTTP ๋ฉ”์„œ๋“œ๋Š” ๋ฆฌ์†Œ์Šค์— ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์„ server์— ์•Œ๋ ค์คŒ

   โฌ‡๏ธ ์ผ๋ฐ˜์ ์ธ 4๊ฐ€์ง€์˜ HTTP ๋ฉ”์„œ๋“œ

    GET : client๋Š” GET์„ ์‚ฌ์šฉํ•˜์—ฌ server์˜ ์ง€์ •๋œ URL์— ์žˆ๋Š” ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•จ. GET ์š”์ฒญ์„ ์บ์‹ฑํ•˜๊ณ  RESTful API ์š”์ฒญ์— ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋„ฃ์–ด ์ „์†กํ•˜์—ฌ ์ „์†ก์ „์— ๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋„๋ก server์— ์ง€์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.

 

    POST : client๋Š” POST๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ server์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค. ๋ฐ์ดํ„ฐ ํ‘œํ˜„์ด ํฌํ•จ๋จ.

    PUT : client๋Š” PUT์„ ์‚ฌ์šฉํ•˜์—ฌ server์˜ ๊ธฐ์กด ๋ฆฌ์†Œ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. POST์™€ ๋‹ฌ๋ฆฌ RESTful ์›น ์„œ๋น„์Šค์—์„œ ๋™์ผํ•œ PUT ์š”์ฒญ์„ ์—ฌ    ๋Ÿฌ๋ฒˆ ์ „์†กํ•ด๋„ ๊ฒฐ๊ณผ๋Š” ๋™์ผํ•˜๋‹ค.

    DELETE : client๋Š” DELETE ์š”์ฒญ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค. DELETE ์š”์ฒญ์€ server์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

HTTP ํ—ค๋”

    ์š”์ฒญ ํ—ค๋”๋Š” client - server ๊ฐ„์— ๊ตํ™˜๋˜๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ. ์š”์ฒญ ๋ฐ ์‘๋‹ต์˜ ํ˜•์‹์„ ๋‚˜ํƒ€๋‚ด๊ณ  ์š”์ฒญ ์ƒํƒœ ๋“ฑ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

    

    ๋ฐ์ดํ„ฐ : REST API ์š”์ฒญ์—๋Š” POST, PUT ๋ฐ ๊ธฐํƒ€ HTTP ๋ฉ”์„œ๋“œ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ž‘๋™ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ๋‹ค.

    ํŒŒ๋ผ๋ฏธํ„ฐ : ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์ž‘์—…์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ server์— ์ œ๊ณตํ•œ๋‹ค.

          - ๊ฒฝ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ : URL ์„ธ๋ถ€์ •๋ณด๋ฅผ ์ง€์ •

          - ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ : ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์š”์ฒญ

          - ์ฟ ํ‚ค ํŒŒ๋ผ๋ฏธํ„ฐ : client๋ฅผ ๋น ๋ฅด๊ฒŒ ์ธ์ฆ

 

โœ”๏ธ์žฅ์ 

1. ํ™•์žฅ์„ฑ

REST API๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์‹œ์Šคํ…œ์€ ํšจ์œจ์ ์œผ๋กœ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฌด์ƒํƒœ๋Š” server ๊ฐ€ ๊ณผ๊ฑฐ client ์š”์ฒญ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— server๋กœ๋“œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

์„ฑ๋Šฅ์„ ์ €ํ•˜์‹œํ‚ค๋Š” ํ†ต์‹  ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์ผ์œผํ‚ค์ง€ ์•Š์œผ๋ฉด์„œ ํ™•์žฅ์„ฑ์„ ์ง€์›ํ•œ๋‹ค.

 

2. ์œ ์—ฐ์„ฑ

RESTful ์›น ์„œ๋น„์Šค๋Š” ์™„์ „ํ•œ client-server ๋ถ„๋ฆฌ๋ฅผ ์ง€์›ํ•œ๋‹ค.

๊ฐ ๋ถ€๋ถ„์ด ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐœ์ „ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค์–‘ํ•œ server ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ๋ถ„๋ฆฌํ•œ๋‹ค.

๊ธฐ์ˆ  ๋ณ€๊ฒฝ์„ ํ•œ๋‹คํ•ด๋„ client ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณ„์ธต์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

 

3. ๋…๋ฆฝ์„ฑ

REST API๋Š” ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ˆ ๊ณผ ๋…๋ฆฝ์ ์ด๋‹ค.

API ์„ค๊ณ„์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ client ๋ฐ server ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ชจ๋‘ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ํ†ต์‹ ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์–‘์ชฝ์˜ ๊ธฐ๋ณธ ๊ธฐ์ˆ ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

โœณ๏ธ ์ฐธ์กฐ 

https://aws.amazon.com/ko/what-is/restful-api/