REST API

MAX GUNΒ·2021λ…„ 6μ›” 8일
0
post-thumbnail
post-custom-banner

RESTλž€ πŸ“„?


"μžμ›"을 μ΄λ¦„μœΌλ‘œ κ΅¬λΆ„ν•˜κ³  "μžμ›"의 μƒνƒœλ₯Ό μ£Όκ³  λ°›λŠ” 것이닀. "μ†Œν”„νŠΈμ›¨μ–΄"μ—μ„œλŠ” μžμ›μ΄ "κ·Έλ¦Ό,데이터,λ™μ˜μƒ"이 될 수 있고 μƒνƒœλ₯Ό μ£Όκ³  λ°›λŠ”λ‹€λŠ” 것은 "μžμ›(κ·Έλ¦Ό,데이터,λ™μ˜μƒ)"을 쑰회,μˆ˜μ •,μ‚­μ œ,생성을 ν•  수 μžˆλ‹€λŠ” λœ»μ΄λ‹€.

REST API πŸ›Έ?


APIμ—μ„œμ˜ ν‘œν˜„μ€ μ•„λž˜μ™€ κ°™λ‹€
μš©μ–΄λ‚΄μš©
μžμ›μžμ›μ„ μ΄λ¦„μœΌλ‘œ κ΅¬λΆ„ν•œλ‹€. ex) board/1λŠ” 1번 κ²Œμ‹œλ¬Όμ΄λΌλŠ” 뜻
ν–‰μœ„HTTP METHODλ₯Ό ν†΅ν•΄μ„œ ν–‰μœ„λ₯Ό ν•œλ‹€. ex)GET,PUT,POST,DELETE
ν‘œν˜„λ‹€μ–‘ν•œ ν˜•νƒœλ‘œ 데이터λ₯Ό μ£Όκ³  받을 수 μžˆλ‹€. ex)JSON,XML,RSS

REST API 섀계원칙 πŸ±β€πŸ


1.URIλŠ” λ¦¬μ†ŒμŠ€λ₯Ό ν‘œν˜„ν•΄μ•Ό ν•œλ‹€.

λ¦¬μ†ŒμŠ€ 즉 μžμ›μ„ ν‘œν˜„ν•΄μ•Ό ν•œλ‹€. λ¦¬μ†ŒμŠ€λŠ” λ™μ‚¬λ³΄λ‹€λŠ” λͺ…사λ₯Ό μ‚¬μš©ν•˜λŠ”κ²Œ μ ν•©ν•˜λ‹€.
μ•„λž˜ μ˜ˆμ‹œλŠ” 직접 잘λͺ»ν•΄μ„œ 적은것을 κ²½ν—˜λ‹΄μœΌλ‘œ μ μ—ˆλ‹€.

 # BAD
 /image-crud-d/:SEQ
 
 # GOOD
 /image/:SEQ

μœ„μ˜ BAD μ—μ„œλŠ” 동사가 λ“€μ–΄κ°€ μžˆλ‹€. "/image-crud-d/:SEQ"λŠ” 동사λ₯Ό λ‚˜νƒ€λ‚Έλ‹€. κ·Έλž˜μ„œ "/image/:SEQ"
으둜 λ°”κΎΈμ—ˆλ‹€. 참고둜 :SEQλŠ” κ²Œμ‹œλ¬Ό λ²ˆν˜Έμ΄λ‹€.

2.λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ ν–‰μœ„λŠ” HTTP METHODλ₯Ό μ‚¬μš©ν•œλ‹€.

HTTPμš”μ²­ λ©”μ†Œλ“œλͺ©μ μ˜ˆμ‹œνŽ˜μ΄λ‘œλ“œ(μ „μ†‘λ˜λŠ” 데이터)
GET정보λ₯Ό 쑰회 ν• λ•Œ 쓰인닀./image/1X
POST정보λ₯Ό μƒμ„±ν• λ•Œ 쓰인닀./image/1O
PUT정보λ₯Ό μˆ˜μ • ν• λ•Œ 쓰인닀./image/1O
DELETE정보λ₯Ό μ‚­μ œ ν• λ•Œ 쓰인닀./image/10

HTTP 응닡 μƒνƒœ μ½”λ“œ πŸ₯©


잘 μ„€κ³„λœ REST APIλŠ” λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ 응닡을 잘 λ‚΄μ–΄μ£ΌλŠ”κ²ƒ κΉŒμ§€ ν¬ν•¨λœλ‹€κ³  ν•œλ‹€.

μƒνƒœμ½”λ“œ
200ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ μ •μƒμ μœΌλ‘œ μˆ˜ν–‰ν•¨
201ν΄λΌμ΄μ–ΈνŠΈκ°€ μ–΄λ– ν•œ λ¦¬μ†ŒμŠ€ 생성을 μš”μ²­, ν•΄λ‹Ή λ¦¬μ†ŒμŠ€κ°€ μ„±κ³΅μ μœΌλ‘œ 생성됨(POSTλ₯Ό ν†΅ν•œ λ¦¬μ†ŒμŠ€ 생성 μž‘μ—… μ‹œ)

μƒνƒœμ½”λ“œ
400ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ΄ λΆ€μ μ ˆ ν•  경우 μ‚¬μš©ν•˜λŠ” 응닡 μ½”λ“œ
401ν΄λΌμ΄μ–ΈνŠΈκ°€ μΈμ¦λ˜μ§€ μ•Šμ€ μƒνƒœμ—μ„œ 보호된 λ¦¬μ†ŒμŠ€λ₯Ό μš”μ²­ν–ˆμ„ λ•Œ μ‚¬μš©ν•˜λŠ” 응닡 μ½”λ“œ
403μœ μ € μΈμ¦μƒνƒœμ™€ 관계 없이 μ‘λ‹΅ν•˜κ³  싢지 μ•Šμ€ λ¦¬μ†ŒμŠ€λ₯Ό ν΄λΌμ΄μ–ΈνŠΈκ°€ μš”μ²­ν–ˆμ„ λ•Œ μ‚¬μš©ν•˜λŠ” 응닡 μ½”λ“œ
405ν΄λΌμ΄μ–ΈνŠΈκ°€ μš”μ²­ν•œ λ¦¬μ†ŒμŠ€μ—μ„œλŠ” μ‚¬μš© λΆˆκ°€λŠ₯ν•œ Methodλ₯Ό μ΄μš©ν–ˆμ„ 경우 μ‚¬μš©ν•˜λŠ” 응닡 μ½”λ“œ

μƒνƒœμ½”λ“œ
301ν΄λΌμ΄μ–ΈνŠΈκ°€ μš”μ²­ν•œ λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ URIκ°€ λ³€κ²½ λ˜μ—ˆμ„ λ•Œ μ‚¬μš©ν•˜λŠ” 응닡 μ½”λ“œ
500μ„œλ²„μ— λ¬Έμ œκ°€ μžˆμ„ 경우 μ‚¬μš©ν•˜λŠ” 응닡 μ½”λ“œ
profile
μ„±μž₯ν•˜λŠ” ν”„λ‘ νŠΈμ—”λ“œ 개발자
post-custom-banner

0개의 λŒ“κΈ€