π REST API ?
REST API λ REpresentational State Transfer API λ‘,
μΉ μλΉμ€μμ ν΅μ νλλ° μ¬μ©λλ μννΈμ¨μ΄ μΈν°νμ΄μ€μ
λλ€.
βοΈ API λ ?
API λ Application Programming Interface λ‘ μ ν리μΌμ΄μ μ λ§λ€κ³ ν΅ν©νκΈ° μν νλ‘ν μ½ μ λλ€
μ 보λ₯Ό μ 곡νλ Provider μ μ 곡λ°λ Consumer μ¬μ΄ κ·μΉμ΄λΌκ³ ν μ μμ΅λλ€.
μ ν리μΌμ΄μ
/ μ»΄ν¨ν° / μμ€ν
... κ³Ό μνΈμμ©νμ¬ κΈ°λ₯μ λ§λ€κ±°λ μνν λ,
API λ₯Ό ν΅ν΄ ν΄λΉ μμ€ν
μ μνλ λ΄μ©, μμ²μ μ λ¬νκ³ μλ΅μ λ°μ μ μμ΅λλ€.
βοΈ REST ?
μμ Resource λ₯Ό μ΄λ¦μΌλ‘ κ΅¬λΆ νμ¬, ν΄λΉ μμμ μνλ₯Ό μ£Όκ³ λ°λκ²μ μλ―Έν©λλ€.
λͺ¨λ μμμ κ³ μ ν μλ³μλ₯Ό κ°μ§κ³ μκ³ , μ΄λ° μμμ URI λ₯Ό ν΅ν΄ μλ³λ©λλ€.
REST is a set of architectural constraints, not a protocol or a standard
REST λ νλ‘ν μ½μ΄λ νμ€μ΄ μλ μν€ν μ³ μ μ½μ‘°κ±΄μ λλ€.
λ°λΌμ κ°λ°μλ REST API λ₯Ό λ€μν λ°©μμΌλ‘ ꡬνν μ μλλ°,
RESTful API λ₯Ό ν΅ν΄ ν΄λΌμ΄μΈνΈμ μμ²μ λ°μΌλ©΄,
HTTP (JSON, HTML, XML, TEXT ... ) λ₯Ό ν΅ν΄ μλν¬μΈνΈλ‘ μ μ‘λ©λλ€.
βοΈ RESTful API ?
API κ° RESTful νλ €λ©΄
- μμ²μ΄ HTTP λ₯Ό ν΅ν΄ κ΄λ¦¬λλ Client-Server μν€ν μ³μ΄μ΄μΌ ν©λλ€.
- Client-Server ν΅μ μ¬μ΄μ μνλ Stateless ν΄μΌν©λλ€. μ¦ μμ² μ¬μ΄μ Client μ 보λ μ μ₯λμ§ μκ³ , κ° μμ²μ΄ λ³λλ‘ μ°κ²°λμ§ μμ΅λλ€. (μλ²κ° ν΄λΌμ΄μΈνΈμ μνλ₯Ό μ μ₯νμ§ μλλ€λ μλ―Έ) μλ²λ κ° μμ²μ λ 립μ μΌλ‘ μ²λ¦¬ν μ μμ΄ νμ₯μ±μ΄ ν₯μλ©λλ€.
- Client-Server μ¬μ΄μ μνΈμμ©μ μ€μΌ μ μλ Cacheable ν λ°μ΄ν°μ΄μ΄μΌ ν©λλ€.
- μμ€ν μ κ° κ΅¬μ± μμ κ°μ μΌκ΄λ μΈν°νμ΄μ€ Uniform Interface λ₯Ό μ μ§ν΄μΌν©λλ€.
(Client-Server ν΅μ μμ λ°μ΄ν° νμ λ±μ΄ μΌκ΄λκ² μ μ§λμ΄μΌ νλ€λ μλ―Έ)- RESTful API μ μμ€ν μ κ³μΈ΅ν Layered System λμ΄, λ μ§μ μΌλ‘ ꡬνλ μ μμ΄μΌ ν©λλ€.
π REST API μ ꡬμ±μμ
βοΈ Resource (μμ)
HTTP URI μλ³μλ‘ κ΅¬μ±λ©λλ€.
βοΈ Verb (μμμ λν νμ)
HTTP Method λ‘ μλ³λ©λλ€. GET, POST, PUT, PATCH, DELETE κ° μμ΅λλ€.
βοΈ Representation (μμμ λν νμμ λ΄μ©)
HTTP Message Payload μ¦ Body λ‘ μλ³λ©λλ€.
βοΈ μ 리
REST ? : HTTP URIλ₯Ό ν΅ν΄ μμμ λͺ μνκ³ , HTTP Method λ₯Ό ν΅ν΄ ν΄λΉ μμμ λν CRUD λ₯Ό μ μ©νλ κ²
β μλ¬Έμ
Q. RESTful API λ Stateless ν΄μΌνλλ°, μ¦ μλ²κ° ν΄λΌμ΄μΈνΈμ μνλ₯Ό μ μ₯νμ§ μλλ€. κ·Έλ λ€λ©΄ ν ν°μ μ¬μ©νμ§ μκ³ Session μ μ¬μ©ν μΈμ¦μ RESTful API κ° μλκ° ? A. Session μ μ¬μ©ν μΈμ¦ λ°©μμ Stateless νμ§ μλ€. λ°λΌμ Session λ³΄λ€ Token μ μ¬μ©νλ λ°©μμ΄ νμ₯μ±μ μ©μ΄νλ€.