Backend
home
๐Ÿ›Œ๐Ÿป

Rest API

ํƒœ๊ทธ
Computer Science
๊ฒŒ์‹œ์ผ
2025/01/22
์ตœ์ข… ํŽธ์ง‘ ์ผ์‹œ
2025/01/24 05:52
1 more property

References

Rest API๋ž€

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

REST๋ž€?

REST(Representational State Transfer)์˜ ์•ฝ์ž๋กœย ์ž์›์„ ์ด๋ฆ„์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ํ•ด๋‹น ์ž์›์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
1.
HTTP URI(Uniform Resource Identifier)๋ฅผ ํ†ตํ•ด ์ž์›(Resource)์„ ๋ช…์‹œํ•˜๊ณ ,
2.
HTTP Method(POST, GET, PUT, DELETE, PATCH ๋“ฑ)๋ฅผ ํ†ตํ•ด
3.
ํ•ด๋‹น ์ž์›(URI)์— ๋Œ€ํ•œ CRUD Operation์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

CRUD Operation์ด๋ž€

CRUD๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ปดํ“จํ„ฐ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๊ฐ€์ง€๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์ธ Create(์ƒ์„ฑ), Read(์ฝ๊ธฐ), Update(๊ฐฑ์‹ ), Delete(์‚ญ์ œ)๋ฅผ ๋ฌถ์–ด์„œ ์ผ์ปซ๋Š” ๋ง๋กœ,
REST์—์„œ์˜ CRUD Operation ๋™์ž‘ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
Create : ๋ฐ์ดํ„ฐ ์ƒ์„ฑ(POST) Read : ๋ฐ์ดํ„ฐ ์กฐํšŒ(GET) Update : ๋ฐ์ดํ„ฐ ์ˆ˜์ •(PUT, PATCH) Delete : ๋ฐ์ดํ„ฐ ์‚ญ์ œ(DELETE)
SQL
๋ณต์‚ฌ

REST ๊ตฌ์„ฑ ์š”์†Œ

REST๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ 3๊ฐ€์ง€๋กœ ๊ตฌ์„ฑ์ด ๋˜์–ด์žˆ๋‹ค.
1.
์ž์›(Resource) : HTTP URI
2.
์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„(Verb) : HTTP Method
3.
์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„์˜ ๋‚ด์šฉ (Representations) : HTTP Message Pay Load

REST์˜ ํŠน์ง•

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

REST์˜ ์žฅ๋‹จ์ 

์žฅ์ 
โ€ข
HTTP ํ”„๋กœํ† ์ฝœ์˜ ์ธํ”„๋ผ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ REST API ์‚ฌ์šฉ์„ ์œ„ํ•œ ๋ณ„๋„์˜ ์ธํ”„๋ผ๋ฅผ ๊ตฌ์ถœํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
โ€ข
HTTP ํ”„๋กœํ† ์ฝœ์˜ ํ‘œ์ค€์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ถ”๊ฐ€์ ์ธ ์žฅ์ ์„ ํ•จ๊ป˜ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ค€๋‹ค.
โ€ข
HTTP ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ฅด๋Š” ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
โ€ข
Hypermedia API์˜ ๊ธฐ๋ณธ์„ ์ถฉ์‹คํžˆ ์ง€ํ‚ค๋ฉด์„œ ๋ฒ”์šฉ์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค.
โ€ข
REST API ๋ฉ”์‹œ์ง€๊ฐ€ ์˜๋„ํ•˜๋Š” ๋ฐ”๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ด๋ฏ€๋กœ ์˜๋„ํ•˜๋Š” ๋ฐ”๋ฅผ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€ข
์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์„œ๋น„์Šค ๋””์ž์ธ์—์„œ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ์ตœ์†Œํ™”ํ•œ๋‹ค.
โ€ข
์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ์—ญํ• ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•œ๋‹ค.
๋‹จ์ 
โ€ข
ํ‘œ์ค€์ด ์ž์ฒด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•„ ์ •์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
โ€ข
HTTP Method ํ˜•ํƒœ๊ฐ€ ์ œํ•œ์ ์ด๋‹ค.
โ€ข
๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ํ…Œ์ŠคํŠธํ•  ์ผ์ด ๋งŽ์€ ์„œ๋น„์Šค๋ผ๋ฉด ์‰ฝ๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ๋Š” URL๋ณด๋‹ค Header ์ •๋ณด์˜ ๊ฐ’์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ „๋ฌธ์„ฑ์ด ์š”๊ตฌ๋œ๋‹ค.
โ€ข
๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ˜ธํ™˜์ด ๋˜์ง€ ์•Š์•„ ์ง€์›ํ•ด์ฃผ์ง€ ๋ชปํ•˜๋Š” ๋™์ž‘์ด ๋งŽ๋‹ค.(์ต์Šคํด๋กœ์–ด)
REST API๋ž€?
REST API๋ž€ REST์˜ ์›๋ฆฌ๋ฅผ ๋”ฐ๋ฅด๋Š” API๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
ํ•˜์ง€๋งŒ REST API๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ง€์ผœ์•ผ ํ•˜๋Š” ๋ช‡๊ฐ€์ง€ ๊ทœ์น™์ด ์žˆ๋‹ค.

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

1. URI๋Š” ๋™์‚ฌ๋ณด๋‹ค๋Š” ๋ช…์‚ฌ๋ฅผ, ๋Œ€๋ฌธ์ž๋ณด๋‹ค๋Š” ์†Œ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์•ผ ํ•œ๋‹ค.
โ€ข
Bad Exampleย http://khj93.com/Running/
โ€ข
Good Exampleย ย http://khj93.com/run/
2. ๋งˆ์ง€๋ง‰์— ์Šฌ๋ž˜์‹œ (/)๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.
โ€ข
Bad Exampleย http://khj93.com/test/ย ย 
โ€ข
Good Exampleย ย http://khj93.com/test
3. ์–ธ๋”๋ฐ” ๋Œ€์‹  ํ•˜์ดํฐ์„ ์‚ฌ์šฉํ•œ๋‹ค.
โ€ข
Bad Exampleย http://khj93.com/test_blog
โ€ข
Good Exampleย ย http://khj93.com/test-blog
4. ํŒŒ์ผํ™•์žฅ์ž๋Š” URI์— ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.
โ€ข
Bad Exampleย http://khj93.com/photo.jpgย ย 
โ€ข
Good Exampleย ย http://khj93.com/photo
5. ํ–‰์œ„๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.
โ€ข
Bad Exampleย http://khj93.com/delete-post/1ย ย 
โ€ข
Good Exampleย ย http://khj93.com/post/1

์ •๋ฆฌ - RESTful์ด๋ž€?

RESTFUL์ด๋ž€ REST์˜ ์›๋ฆฌ๋ฅผ ๋”ฐ๋ฅด๋Š” ์‹œ์Šคํ…œ์„ ์˜๋ฏธํ•œ๋‹ค. ํ•˜์ง€๋งŒ REST๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค ํ•˜์—ฌ ๋ชจ๋‘๊ฐ€ RESTful ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.ย ย REST API์˜ ์„ค๊ณ„ ๊ทœ์น™์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ง€ํ‚จ ์‹œ์Šคํ…œ์„ RESTfulํ•˜๋‹ค ๋งํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ชจ๋“  CRUD ๊ธฐ๋Šฅ์„ POST๋กœ ์ฒ˜๋ฆฌ ํ•˜๋Š” API ํ˜น์€ URI ๊ทœ์น™์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ง€ํ‚ค์ง€ ์•Š์€ API๋Š”ย REST API์˜ ์„ค๊ณ„ ๊ทœ์น™์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ง€ํ‚ค์ง€ ๋ชปํ•œ ์‹œ์Šคํ…œ์€ REST API๋ฅผ ์‚ฌ์šฉํ•˜์˜€์ง€๋งŒ RESTful ํ•˜์ง€ ๋ชปํ•œ ์‹œ์Šคํ…œ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.