[API κ΄λ ¨ κΈ]
https://velog.io/@bommy5799/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-APIAplication-Programing-Interface
rest
λΌλ νμμ APIλ‘, μλΉμ€μ μμμ λ리 μ¬μ©νκ² λμλ€.
- REST APIλ
μΉ
μμ μ¬μ©λλ λ°μ΄ν°λ μμ(Resource)μHTTP URI
λ‘ νννκ³ ,HTTP νλ‘ν μ½
μ ν΅ν΄ μμ²κ³Ό μλ΅μ μ μνλ λ°©μ
REST
λ HTTPλ₯Ό μ νμ©νκΈ° μν μμΉ
μ΄λΌκ³ ν μ μκ³ REST API
λ μ΄ μμΉμ μ€μν΄ λ§λ API
μ΄λ€.
(βοΈ νμ§λ§ μ€λ¬΄μμ restAPIλ₯Ό μν κ·μΉμ λ§μ‘±νλ©΄μ μ¬μ©νλ κ²μ κ±°μ λΆκ°λ₯μ κ°κΉμ°λ―λ‘ HTTP APIμ rest APIλ μ€μ λ‘ κ±°μ λμΌν μλ―Έλ‘ μ¬μ©λλ€κ³ 보면 λλ€. )
rest API
λ μμ²μ 보λ΄λ μ£Όμ μ체
λ‘λ μ΄λ€ μμ²μΈμ§ μ μΆκ° κ°λ₯
νλ€λ νΉμ§μ΄ μλ€.
μμμ ꡬ쑰μ ν¨κ» λνλ΄λ URI
λΌλ ꡬλΆμ
λ₯Ό μ¬μ©νκΈ° λλ¬Έμ΄λ€.
μΉ μ ν리μΌμ΄μ
μν€ν
μ²μμ ν΄λΌμ΄μΈνΈμ μλ²κ° ν΅μ μ ν λ μ§μΌμΌ ν κ·μ½μ νλ‘ν μ½
μ΄λΌκ³ νκ³ , λνμ μΌλ‘ HTTP
νλ‘ν μ½μ΄ μλ€.
rest APIμμλ HTTP
μμ μμ²μ 보λΌλ μ¬μ©νλ λ©μλλ₯Ό μ¬μ©νλ€.
GET
- λ°μ΄ν°λ₯Ό read, μ‘°ννλλ° μ¬μ©
POST
- [body], create μλ‘μ΄ μ 보λ₯Ό μΆκ°νλλ° μ¬μ©
DELETE
- λ°μ΄ν° μμ μ μ¬μ©
PUT
- [body], μ 보λ₯Ό ν΅μ§Έλ‘ κ°μλΌμΈλ μ¬μ©
PATCH
- [body], μ 보 μ€ μΌλΆλ₯Ό νΉμ λ°©μμΌλ‘ λ³κ²½ν λ μ¬μ©
κ°κ°μ λ©μλλ€μ μ©λκ° λͺ
ννκ² κ΅¬λΆλμ΄ μμ§ μμ§λ§, λꡬλ μμ²μ μλλ₯Ό λͺ
ν
νκ² μ¬μ©νκΈ° μν΄μλ μ΄λ€μ λͺ©μ μ λ°λΌ ꡬλΆν΄μ μ¬μ©
ν΄μΌ νλ€.
restμ κ·μΉ μ€ νλλ‘ URI
λ λμ¬κ° μλ λͺ
μ¬λ‘ μ΄λ€μ ΈμΌ νλ€
.
restλ νμ
μ΄λ―λ‘ κΈ°μ μ ꡬμ λ°μ§ μλλ€.
λ‘μ΄ νλ©μ΄ λ
Όλ¬Έμμ μ μν REST λ°©λ²λ‘ μ λ³΄λ€ λ μ€μ©μ μΌλ‘ μ μ©νκΈ° μν΄ λ μ€λλ₯΄λ 리차λμ¨(Leonard Richardson)μ REST APIλ₯Ό μ μ μ©νκΈ° μν 4λ¨κ³ λͺ¨λΈ
μ μ μνμλ€.
μ΄λ REST APIλ₯Ό μμ±νκΈ° μν κΈ°λ³Έ λ¨κ³μ΄λ€.
λͺ¨λ μμμ κ°λ³ 리μμ€
μ λ§λ μλν¬μΈνΈ(Endpoint)
λ₯Ό μ¬μ©ν΄μΌνλ©° μμ²νκ³ λ°λ μμμ λν μ 보
λ₯Ό μλ΅
μΌλ‘ μ λ¬ν΄μΌ νλ€.
μμ²μ λ°λ₯Έ μλ΅μΌλ‘ 리μμ€λ₯Ό μ λ¬ν λμλ μ¬μ©ν 리μμ€μ λν μ 보μ ν¨κ» 리μμ€ μ¬μ©μ λν μ±κ³΅/μ€ν¨ μ¬λΆ
λ₯Ό λ°νν΄μΌνλ€.
λμ¬, HTTP λ©μλ, νΉμ μ΄λ€ νμμ λν λ¨μ΄ μ¬μ©μ μ§μ
리μμ€μ μ§μ€ν΄ λͺ
μ¬
ννμ λ¨μ΄λ‘ μμ±νλ κ²μ΄ λ°λμ§
REST μ±μλ λͺ¨λΈμ 2λ¨κ³κΉμ§ μ μ©νλ©΄ λ체μ μΌλ‘ μ μμ±λ APIλ‘ κ°μ£Όνλ€.
CRUDλ Create
, Read
, Update
,Delete
λ₯Ό μλ―Έ
(1) GET λ©μλλ₯Ό ν΅ν΄ μ‘°ν :
μμ½ κ°λ₯ν μκ°μ λν΄ κ΅¬μ²΄μ μΈ query parameter(slots?date=2022-08-10)λ₯Ό μ λ¬νμ¬ λ°μ΄ν°λ₯Ό νμΈ(Read)
(2) POST λ©μλλ‘ μμ², νΉμ μκ°μ μμ½νκΈ° :
patientλ₯Ό μ¬λ°λ₯΄κ² Createνμμμ νμΈ ("patient":"κΉμ½λ©")
(3) POST μμ²μ λν μλ΅ λ°ν :
λͺ νν μλ΅ μ½λ(201 Created) νμΈ, μμ½ μλ£ κ²°κ³Όλ₯Ό Location ν€λμ URIλ‘ λ°ν(Location: slots/123/appointment) νμ¬ μλ΅μ νμΈν μ μμ
μμ²μ 2λ¨κ³μ λμΌνμ§λ§, μλ΅
μλ 리μμ€μ URI
λ₯Ό ν¬ν¨ν λ§ν¬ μμ
λ₯Ό μ½μ
νμ¬ μμ±ν΄μΌ νλ€.
νμ΄νΌ λ―Έλμ΄ μ»¨νΈλ‘€
μ ν΅ν΄ μλ΅μ λν΄ λ€μν μ‘μ
μμλ₯Ό μ μ©ν μ μλ€.
ex. μμ½ κ°λ₯ μκ° νμΈ ν κ·Έ μκ°λμ μμ½ν μ μλ λ§ν¬λ₯Ό μ½μ