[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. μμ½ κ°λ₯ μκ° νμΈ ν κ·Έ μκ°λμ μμ½ν μ μλ λ§ν¬λ₯Ό μ½μ