π‘ PRG ν¨ν΄μ΄λ?
μΉ MVC ꡬ쑰μμ ννκ² μ¬μ©νλ ν¨ν΄μΌλ‘, HTTP POST μμ²μ λν μλ΅μ΄ λ λ€λ₯Έ URLλ‘μ GET μμ²μ μν Redirectμ¬μΌ νλ€λ κ²μ μλ―Ένλ€. λ€μ λ§ν΄, POST λ°©μμΌλ‘ μ¨ μμ²μ λν΄μ GET λ°©μμ μΉνμ΄μ§λ‘ Redirect μν€λ ν¨ν΄μ λ§νλ€.
π‘ PRG ν¨ν΄μ μ¬μ©νμ§ μμΌλ©΄ λ°μνλ λ¬Έμ μ
μλ‘κ³ μΉ¨μΌλ‘ μΈν λμΌν μμ²μ΄ μ°μμ μΌλ‘ 보λ΄μ§λ μ΄μκ° λ°μνλ€.
λ§μ½ μ΄ μ΄μκ° μ€μνμ§ μμ λ‘μ§μ΄ μλ λΆλΆμ΄λΌλ©΄ μκ΄μκ² μ§λ§ κ²°μ κ°μ μ€μν λ‘μ§μμλ μ€λ³΅ κ²°μ κ° μΌμ΄λλ λ¬Έμ κ° λ°μνλ€.
POST μμ²μ URLμ 볡μ¬νλλΌλ λ€λ₯Έ μ¬λκ³Ό 곡μ ν μ μλ€.
POST μμ²μ 보λ΄κ² λλ©΄ Parameter κ°λ€μ΄ URLμ λ¨κ²¨μμ§ μκΈ°μ νΉμ Paramter κ° νμν POST μμ²μΈ κ²½μ° URLμ λ³΅λΆ νλλΌλ μλ¬ νμ΄μ§λ§ 보μ΄κ² λ κ²μ΄λ€.
π‘ PRG ν¨ν΄ μ½λ
μ μ© μ :
@Controller
class TestController {
@GetMapping
public String main(){
return "main";
}
@PostMapping("/pay")
public String pay(){
// κ²°μ λ‘μ§
return "success";
}
}
μ μ© ν :
@Controller
class TestController {
@GetMapping
public String main(){
return "main";
}
@PostMapping("/pay")
public String pay(){
// κ²°μ λ‘μ§
return "redirect:/success";
}
@GetMapping("/success")
public String success(){
return "success";
}
}
λΈλΌμ°μ μμλ /payλΌλ POST μμ²μ΄ μ€κ² λλ©΄ 302 μλ΅ μ½λλ₯Ό λ°κ² λ κ²μ΄κ³ 302 μλ΅ μ½λλ₯Ό λ°μ λΈλΌμ°μ λ /successλΌλ κ³³μΌλ‘ 리λ€μ΄λ νΈ μμΌμ€λ€. λΈλΌμ°μ λ /success λΌλ κ³³μΌλ‘ μ΄λνκΈ°μ μλ‘κ³ μΉ¨μ νλλΌλ GET /successλ‘ μλ‘ κ³ μΉ¨μ νλ κ²μ΄λΌ κ²°μ λ‘μ§μ΄ μ€λ³΅μΌλ‘ λ°μνμ§ μμλΏλλ¬ 3XX μλ΅ μ½λλ₯Ό λ°μ νμ΄μ§μ λν΄μλ λΈλΌμ°μ μμλ μ μ₯νκ³ μμ§ μμΌλ―λ‘ λ€λ‘ κ°κΈ°λ₯Ό νλλΌλ ν΄λΉ νμ΄μ§( /pay )κ° λμ€μ§ μκ² λλ€.
λ°μν