π κ²μ API: GET vs POST λ°©μ λΉκ΅
βκ²μ(μ‘°ν)μ λΉμ°ν GET μλμΌ?β λΌκ³ μκ°νλ κ²μ΄ REST APIμ κΈ°λ³Έ μμΉμ λν μ¬λ°λ₯Έ μ΄ν΄μ λλ€.
κ·ΈλΌμλ λΆκ΅¬νκ³ μ€λ¬΄μμ κ²μ κΈ°λ₯μ POSTλ₯Ό μ¬μ©νλ λ°μλ λͺ κ°μ§ νμ€μ μΈ μ΄μ κ° μμ΅λλ€.
β μμΉ: κ²μμ GETμ΄ λ§μ΅λλ€
λ©±λ±μ±(Idempotent)μ κ°μ§λ λ¨μ μ‘°ν κΈ°λ₯μ GET λ©μλλ₯Ό μ¬μ©νλ κ²μ΄ RESTful APIμ μμΉμ κ°μ₯ λΆν©ν©λλ€.
GET λ°©μμ μ₯μ
- λ©±λ±μ±: μ¬λ¬ λ² νΈμΆν΄λ κ²°κ³Όκ° λμΌν νΉμ±. βμ μ¬μλβλ₯Ό 100λ² κ²μν΄λ νμ κ°μ κ²°κ³Όκ° λμ΅λλ€.
-
μΊμ±:
GETμμ²μ λΈλΌμ°μ λ λ€νΈμν¬ μ₯λΉμμ μΊμ±λ μ μμ΄ μ±λ₯μ μ΄μ μ΄ μμ΅λλ€. -
λΆλ§ν¬ λ° κ³΅μ : URL μ체μ κ²μ μ‘°κ±΄μ΄ ν¬ν¨λμ΄ (
?q=μ μ¬μλ) λ§ν¬λ₯Ό λΆλ§ν¬νκ±°λ λ€λ₯Έ μ¬λμκ² κ³΅μ νκΈ° μ½μ΅λλ€.
π€ νμ€: μ POSTλ₯Ό μ¬μ©ν κΉμ?
μ΄λ‘ μ μΌλ‘λ GETμ΄ λ§μ§λ§, λ€μκ³Ό κ°μ GETμ νκ³ λλ¬Έμ μ€λ¬΄μμλ POSTλ₯Ό μ¬μ©νκ³€ ν©λλ€.
1. κ²μ μ‘°κ±΄μ΄ λ³΅μ‘νκ³ κΈΈμ΄μ§ λ
λ§μ½ κ²μ μ‘°κ±΄μ΄ λ¨μν chapterName νλκ° μλλΌ, μ¬λ¬ νν°λ₯Ό μ‘°ν©ν΄μΌ νλ€λ©΄ μ΄λ»κ² λ κΉμ?
볡μ‘ν κ²μ μμ
- βμ μ¬μλβ μ±ν° μ€μμ
- βꡬμκΈ°β λλ βμ μκΈ°β μλμ μ λ¬Ό μ€
- νΉμ μ§μ(βμ°μ² μ 곑리β)μμ λ°κ²¬λμκ³
- λ±λ‘λ μ§ 1λ μ΄λ΄μΈ λ°μ΄ν°
GET λ°©μμ λ¬Έμ μ
URLμ΄ μλμ²λΌ λ§€μ° κΈΈκ³ λ³΅μ‘ν΄μ§λλ€.
/api/search?chapter=μ μ¬μλ&type=μ λ¬Ό&periods=ꡬμκΈ°&periods=μ μκΈ°®ion=μ°μ² μ 곑리®isteredAfter=2024-10-07...
κ°λ μ±μ΄ λ¨μ΄μ§κ³ κ΄λ¦¬νκΈ° μ΄λ ΅μ΅λλ€.
POST λ°©μμ ν΄κ²°
λμΌν κ²μ 쑰건μ JSON Bodyμ λ΄μ 보λ΄λ©΄ ν¨μ¬ ꡬ쑰μ μ΄κ³ λͺ ννκ² ννν μ μμ΅λλ€.
{
"chapterName": "μ μ¬μλ",
"type": "μ λ¬Ό",
"periods": ["ꡬμκΈ°", "μ μκΈ°"],
"region": "μ°μ² μ 곑리",
"registeredAfter": "2024-10-07"
}
2. URL κΈΈμ΄ μ ν
λ¬Έμ μ
λλΆλΆμ λΈλΌμ°μ μ μΉ μλ²λ URLμ κΈΈμ΄λ₯Ό μ½ 2000μ λ΄μΈλ‘ μ νν©λλ€.
볡μ‘ν κ²μ 쑰건μ΄λ, μ¬λ¬ κ°μ ID λͺ©λ‘μΌλ‘ κ²μνλ κ²½μ° μ΄ κΈΈμ΄λ₯Ό μ½κ² μ΄κ³Όν μ μμ΅λλ€.
POST λ°©μμ ν΄κ²°
HTTP POST μμ²μ Bodyλ URL κΈΈμ΄ μ νκ³Ό 무κ΄νλ―λ‘, ν¨μ¬ λ λ§μ μμ κ²μ 쑰건μ μμ νκ² μλ²λ‘ λ³΄λΌ μ μμ΅λλ€.
3. 보μ λ° λ―Όκ° μ 보
λ¬Έμ μ
GET μμ²μ λͺ¨λ κ²μ μ‘°κ±΄μ΄ URLμ κ·Έλλ‘ λ
ΈμΆλ©λλ€.
μ΄λ λΈλΌμ°μ λ°©λ¬Έ κΈ°λ‘, μΉ μλ² λ‘κ·Έ, 곡μ λ λ§ν¬ λ±μ λ―Όκ°ν μ 보(μ: μ£Όλ―Όλ±λ‘λ²νΈ, κ°μΈ μ΄λ¦)κ° κ·Έλλ‘ λ¨μ μ μλ€λ 보μμ μ½μ μ κ°μ§λλ€.
POST λ°©μμ ν΄κ²°
POST μμ²μ Bodyλ URLμ λλ¬λμ§ μμΌλ―λ‘, λ―Όκ°ν μ 보λ₯Ό λ΄μ κ²μν΄μΌ ν λ ν¨μ¬ μμ ν λ°©λ²μ
λλ€.
π λΉκ΅ μ 리
| Β | GET (μ΄μμ ) | POST (νμ€μ /μ€μ©μ ) |
|---|---|---|
| μ₯μ | β’ REST μμΉ λΆν© β’ μΊμ± κ°λ₯ β’ λΆλ§ν¬/곡μ μ©μ΄ |
⒠볡μ‘ν 쑰건 νν β’ κΈΈμ΄ μ ν μμ ⒠보μμ μ 리 |
| λ¨μ | ⒠볡μ‘ν 쑰건 νν μ΄λ €μ β’ URL κΈΈμ΄ μ ν ⒠보μ μ·¨μ½ |
β’ REST μμΉ μλ°° κ°λ₯μ± β’ μΊμ± λΆκ° β’ λΆλ§ν¬/곡μ λΆκ° |
| μΆμ² μ©λ | λ¨μν ν€μλ κ²μ IDλ‘ λ¨κ±΄ μ‘°ν |
볡μ‘ν νν°λ§ λ€μ€ 쑰건 κ²μ λ―Όκ° μ 보 κ²μ |
π‘ κ²°λ‘
βλ¨μ κ²μμ GET, 볡μ‘ν κ²μμ POSTβ
μ΄λ² κ²½μ°μ²λΌ λ¨μν chapterName νλλ§μΌλ‘ κ²μνλ€λ©΄ GETμΌλ‘λ μΆ©λΆνμ§λ§, μμΌλ‘ μ΄ κ²μ κΈ°λ₯μ΄ λ 볡μ‘ν΄μ§ κ°λ₯μ±μ μΌλμ λκ³ νμ₯μ±μ μν΄ POSTλ₯Ό μ ννλ κ²μ λ§€μ° μ€μ©μ μ΄κ³ νλͺ
ν μ€κ³ κ²°μ μΌ μ μμ΅λλ€.