Notice
Recent Posts
Link
Today
Total
10-06 02:35
๊ด€๋ฆฌ ๋ฉ”๋‰ด

dingdong coding

RESTful API ๋ณธ๋ฌธ

๐ŸŒˆWeb & Network

RESTful API

๐Ÿถ ๊ฐœ๋ฐœ๊ฐœ๋ฐœ ๐Ÿพ 2022. 6. 15. 12:30

RESTful API

REST์˜ ๊ธฐ๋ณธ ์›์น™์„ ์„ฑ์‹คํžˆ ์ง€ํ‚จ API

 

REST ๋ž€?

: REpresenrational State Transfer ( + ful ~ํ•œ  ) ์˜ ์ค„์ž„๋ง๋กœ ์ฆ‰, ์›น์„ ์œ„ํ•œ ๋„คํŠธ์›Œํฌ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ณ ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค.

 

๋„คํŠธ์›Œํฌ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ณ ๊ณ ๋ ค์‚ฌํ•ญ์—๋Š” ์„ฑ๋Šฅ, ๊ทœ๋ชจํ™•์žฅ์„ฑ(Scalability), ๋‹จ์ˆœ์„ฑ, ์ˆ˜์ •์šฉ์ด์„ฑ(Modifiability), ๊ฐ€์‹œ์„ฑ(Visibility), ์ด์‹์„ฑ(Portability), ์‹ ๋ขฐ์„ฑ(Reliability) ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

REST๋Š” ํ•˜๋‚˜์˜ Architecture๋กœ  Resource Oriented Architecture ์ฆ‰, " API ์„ค๊ณ„ ์ค‘์‹ฌ์— ์ž์›์ด ์žˆ๊ณ  HTTP Method๋ฅผ ํ†ตํ•ด ์ž์›์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ" ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ REST์˜ ๊ธฐ๋ณธ ์›์น™์„ ์„ฑ์‹คํžˆ ์ง€ํ‚จ ์„œ๋น„์Šค ๋””์ž์ธ์€ “RESTful ํ•˜๋‹ค.” ๋ผ๊ณ  ํ”ํžˆ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด์ฃ .

 

REST์˜ ๊ธฐ๋ณธ ์›์น™

1) Uniform (์œ ๋‹ˆํผ ์ธํ„ฐํŽ˜์ด์Šค)

Uniform Interface๋Š” URI๋กœ ์ง€์ •ํ•œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์กฐ์ž‘์„ ํ†ต์ผ๋˜๊ณ  ํ•œ์ •์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

2) Stateless (๋ฌด์ƒํƒœ์„ฑ)

REST๋Š” ๋ฌด์ƒํƒœ์„ฑ ์„ฑ๊ฒฉ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด ์ž‘์—…์„ ์œ„ํ•œ ์ƒํƒœ์ •๋ณด๋ฅผ ๋”ฐ๋กœ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„ธ์…˜ ์ •๋ณด๋‚˜ ์ฟ ํ‚ค์ •๋ณด๋ฅผ ๋ณ„๋„๋กœ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— API ์„œ๋ฒ„๋Š” ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ๋งŒ์„ ๋‹จ์ˆœํžˆ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ์„œ๋น„์Šค์˜ ์ž์œ ๋„๊ฐ€ ๋†’์•„์ง€๊ณ  ์„œ๋ฒ„์—์„œ ๋ถˆํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์Œ์œผ๋กœ์จ ๊ตฌํ˜„์ด ๋‹จ์ˆœํ•ด์ง‘๋‹ˆ๋‹ค.

 

3) Cacheable (์บ์‹œ ๊ฐ€๋Šฅ)

REST์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋Š” HTTP๋ผ๋Š” ๊ธฐ์กด ์›นํ‘œ์ค€์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์›น์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์กด ์ธํ”„๋ผ๋ฅผ ๊ทธ๋Œ€๋กœ ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ HTTP๊ฐ€ ๊ฐ€์ง„ ์บ์‹ฑ ๊ธฐ๋Šฅ์ด ์ ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. HTTP ํ”„๋กœํ† ์ฝœ ํ‘œ์ค€์—์„œ ์‚ฌ์šฉํ•˜๋Š” Last-Modifiedํƒœ๊ทธ๋‚˜ E-Tag๋ฅผ ์ด์šฉํ•˜๋ฉด ์บ์‹ฑ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

4) Self-descriptiveness (์ž์ฒด ํ‘œํ˜„ ๊ตฌ์กฐ)

REST์˜ ๋˜ ๋‹ค๋ฅธ ํฐ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋Š” REST API ๋ฉ”์‹œ์ง€๋งŒ ๋ณด๊ณ ๋„ ์ด๋ฅผ ์‰ฝ๊ฒŒ ์ดํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” ์ž์ฒด ํ‘œํ˜„ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

5) Client - Server ๊ตฌ์กฐ

REST ์„œ๋ฒ„๋Š” API ์ œ๊ณต, ํด๋ผ์ด์–ธํŠธ๋Š” ์‚ฌ์šฉ์ž ์ธ์ฆ์ด๋‚˜ ์ปจํ…์ŠคํŠธ(์„ธ์…˜, ๋กœ๊ทธ์ธ ์ •๋ณด)๋“ฑ์„ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๊ฐ๊ฐ์˜ ์—ญํ• ์ด ํ™•์‹คํžˆ ๊ตฌ๋ถ„๋˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์—์„œ ๊ฐœ๋ฐœํ•ด์•ผ ํ•  ๋‚ด์šฉ์ด ๋ช…ํ™•ํ•ด์ง€๊ณ  ์„œ๋กœ๊ฐ„ ์˜์กด์„ฑ์ด ์ค„์–ด๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

6) ๊ณ„์ธตํ˜• ๊ตฌ์กฐ

REST ์„œ๋ฒ„๋Š” ๋‹ค์ค‘ ๊ณ„์ธต์œผ๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ณด์•ˆ, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, ์•”ํ˜ธํ™” ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•ด ๊ตฌ์กฐ์ƒ์˜ ์œ ์—ฐ์„ฑ์„ ๋‘˜ ์ˆ˜ ์žˆ๊ณ  PROXY, ๊ฒŒ์ดํŠธ์›จ์ด ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ๊ธฐ๋ฐ˜์˜ ์ค‘๊ฐ„๋งค์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

 

RESTful API ๊ฐ€์ด๋“œ

1. URI๋Š” ์ •๋ณด์˜ ์ž์›์„ ํ‘œํ˜„ํ•˜๊ณ  ํ–‰์œ„๋Š” HTTP Method๋กœ ํ‘œํ˜„ํ•œ๋‹ค.

    - URI๋Š” ์ •๋ณด์˜ ์ž์›์„ ํ‘œํ˜„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ ๋ฆฌ์†Œ์Šค๋ช…์€ ๋ช…์‚ฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    - ์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„๋Š” HTTP Method๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

 

HTTP Method

HTTP ์‘๋‹ต์ฝ”๋“œ 

2. Message๋Š” Header์™€ Body๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•ด์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.   

    - Body : Entity์— ๋Œ€ํ•œ ๋‚ด์šฉ

    - Header :  API ๋ฒ„์ „์ •๋ณด, MIME ํƒ€์ž…

 

3. API ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

4. Server์™€ Client๊ฐ€ ๊ฐ™์€ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์„œ ์š”์ฒญํ•˜๋„๋ก ํ˜•์‹์„ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค.

 

 

ํ•™์Šต์— ๋งŽ์€ ๋„์›€์ด ๋œ ๋ธ”๋กœ๊ทธ ๋งํฌ๋ฅผ  ์ฐธ์กฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ™‚

 

์ฐธ์กฐ ๋ฐ ์ถœ์ฒ˜

REST API ์ œ๋Œ€๋กœ ์•Œ๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ

๋ฐ”์œ ๊ฐœ๋ฐœ์ž๋“ค์„ ์œ„ํ•œ REST ๋…ผ๋ฌธ ์š”์•ฝ

REST ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ๋””์ž์ธ ํŒ

 

 

 

 

 

'๐ŸŒˆWeb & Network' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ OS ] ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ Process, Thread  (0) 2022.07.12
Monolithic Architecture, Micro Service Architecture  (0) 2022.06.27
HTTP Method  (0) 2022.04.09
HTTP  (0) 2022.03.27
URL ๊ตฌ์กฐ ์ดํ•ดํ•˜๊ธฐ (feat. URI, URN)  (0) 2022.03.19
Comments