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/1 | X |
POST | μ 보λ₯Ό μμ±ν λ μ°μΈλ€. | /image/1 | O |
PUT | μ 보λ₯Ό μμ ν λ μ°μΈλ€. | /image/1 | O |
DELETE | μ 보λ₯Ό μμ ν λ μ°μΈλ€. | /image/1 | 0 |
HTTP μλ΅ μν μ½λ π₯©
μ μ€κ³λ REST APIλ 리μμ€μ λν μλ΅μ μ λ΄μ΄μ£Όλκ² κΉμ§ ν¬ν¨λλ€κ³ νλ€.
μνμ½λ | |
---|
200 | ν΄λΌμ΄μΈνΈμ μμ²μ μ μμ μΌλ‘ μνν¨ |
201 | ν΄λΌμ΄μΈνΈκ° μ΄λ ν 리μμ€ μμ±μ μμ², ν΄λΉ 리μμ€κ° μ±κ³΅μ μΌλ‘ μμ±λ¨(POSTλ₯Ό ν΅ν 리μμ€ μμ± μμ
μ) |
μνμ½λ | |
---|
400 | ν΄λΌμ΄μΈνΈμ μμ²μ΄ λΆμ μ ν κ²½μ° μ¬μ©νλ μλ΅ μ½λ |
401 | ν΄λΌμ΄μΈνΈκ° μΈμ¦λμ§ μμ μνμμ 보νΈλ 리μμ€λ₯Ό μμ²νμ λ μ¬μ©νλ μλ΅ μ½λ |
403 | μ μ μΈμ¦μνμ κ΄κ³ μμ΄ μλ΅νκ³ μΆμ§ μμ 리μμ€λ₯Ό ν΄λΌμ΄μΈνΈκ° μμ²νμ λ μ¬μ©νλ μλ΅ μ½λ |
405 | ν΄λΌμ΄μΈνΈκ° μμ²ν 리μμ€μμλ μ¬μ© λΆκ°λ₯ν Methodλ₯Ό μ΄μ©νμ κ²½μ° μ¬μ©νλ μλ΅ μ½λ |
μνμ½λ | |
---|
301 | ν΄λΌμ΄μΈνΈκ° μμ²ν 리μμ€μ λν URIκ° λ³κ²½ λμμ λ μ¬μ©νλ μλ΅ μ½λ |
500 | μλ²μ λ¬Έμ κ° μμ κ²½μ° μ¬μ©νλ μλ΅ μ½λ |