λ°μν
PRG Post/Redirect/Get
Post/Redirect/Get
ν¨ν΄μ μ¬μ©μκ° νμ΄μ§λ₯Ό μλ‘κ³ μΉ¨νκ±°λ λΈλΌμ°μ μμ λ€λ‘ νμ΄νλ₯Ό ν΄λ¦ν λ μ€λ³΅λ μμ μ μΆμ λ°©μ§νλ ν¨ν΄μ΄λ€.Post
λ°©μμΌλ‘ μ¨ μμ²μ λν΄μ Get
λ°©μμΌλ‘ μΉνμ΄μ§λ₯Ό Redirect
μν€λ ν¨ν΄μ΄λΌκ³ λ§ν μ μλ€.
μ€λ³΅ λ±λ‘ μμ
μ¬μ©μκ° νμκ°μ μ μλ£ν λ€μ, λ°λ‘ νμΈ νμ΄μ§λ‘ μ΄λλλ€κ³ κ°μ
- μ¬μ©μκ° νμκ°μ μ μν΄ νμκ°μ νμ΄μ§λ‘ μ΄λ
- νμκ°μ μ νμν μ¬λ¬ λ°μ΄ν° μ λ ₯
- νμκ°μ
λ²νΌ ν΄λ¦ (
POST μμ²
) - νμκ°μ μ±κ³΅ (μλ²μμ νμκ°μ λ‘μ§ μ±κ³΅)
- νμκ°μ
μ±κ³΅ νμΈ νμ΄μ§λ‘ μ΄λ (
μ±κ³΅ νμΈ νμ΄μ§λ‘ forward
) - μ¬μ©μκ° λΈλΌμ°μ μμ "μλ‘ κ³ μΉ¨" λλ "λ€λ‘"λ₯Ό ν΄λ¦
- λ§μ½ Post/Redirect/Getμ΄ κ΅¬νλμ§ μμΌλ©΄
POST μμ
(μ¦, νμκ°μ )μ΄ μλ²λ‘ λ€μ μ μ‘λ¨. μ€λ³΅λ λ°μ΄ν° λ±λ‘- μλ‘ κ³ μΉ¨ μ λ§μ§λ§μ μλ²μ μ μ‘ν λ°μ΄ν°κ° λ€μ μ μ‘λκΈ° λλ¬Έ
μ΄λ λΈλΌμ°μ λ alertμ°½μΌλ‘ μ¬μ©μμκ² λ°μ΄ν°λ₯Ό μ λ§λ‘ λ€μ λ³΄λΌ κ²μΈμ§ 묻μ§λ§, κ·Έλ¬λ μ§λ¬Έμ μ΄ν΄νμ§ λͺ»νκ³ λ€μ μ μ‘νκ² λλ€λ©΄ μ€λ³΅λ λ°μ΄ν°κ° μλ²μ λ±λ‘λκ² λλ€.
ν΄κ²° λ°©λ²
μ¬μ©μκ° νμκ°μ μ μλ£ν λ€μ, λ°λ‘ νμΈ νμ΄μ§λ‘ μ΄λνλ€κ³ κ°μ
- μ¬μ©μκ° νμκ°μ μ μν΄ νμκ°μ νμ΄μ§λ‘ μ΄λ
- νμκ°μ μ νμν μ¬λ¬ λ°μ΄ν° μ λ ₯
- νμκ°μ
λ²νΌ ν΄λ¦ (
POST μμ²
) - νμκ°μ
μ±κ³΅ (μλ²μμ νμκ°μ
λ‘μ§ μ±κ³΅ ν μ±κ³΅ νμΈ νμ΄μ§λ‘ forwardκ° μλ, μ URLλ‘
redirect
- μνμ½λ 3xx ν¬ν¨) - νμκ°μ
μ±κ³΅ νμΈ νμ΄μ§λ‘ μ΄λ (λΈλΌμ°μ μμ μλ²μκ² λ€μ
GET
λ°©μμΌλ‘ μ±κ³΅ νμΈ νμ΄μ§ μμ²) - μ¬μ©μκ° λΈλΌμ°μ μμ "μλ‘ κ³ μΉ¨" λλ "λ€λ‘"λ₯Ό ν΄λ¦ (μ΄μ μ μλ²μ μ μ‘ν λ°μ΄ν°κ° GET λ°©μμΌλ‘ μμ²ν μ±κ³΅ νμΈ νμ΄μ§μ΄κΈ° λλ¬Έμ λ€μ GET μμ² λ³΄λ)
- νμκ°μ μ±κ³΅ νμΈ νμ΄μ§λ‘ λ€μ μ΄λ
/**
* PRG - Post/Redirect/Get
*/
@PostMapping("/member")
public String createMember(Member member) {
memberRepository.save(member);
return "redirect:/member/+ member.getId()"; // νμκ°μ
μ±κ³΅ νμ΄μ§λ‘ redirect
}
RedirectAttributes (Spring)
/**
* RedirectAttributes
* URL μΈμ½λ©λ ν΄μ£Όκ³ PathVariable, Query Parameterλ μ€μ ν΄μ 리λ€μ΄λ νΈ ν΄μ€λ€.
*/
@PostMapping("/member")
public String createMemberVer2(Member member, RedirectAttributes redirectAttributes) {
Member savedMember = memberRepository.save(member);
redirectAttributes.addAttribute("memberId", savedMember.getId());
redirectAttributes.addAttribute("status", true);
return "redirect:/member/{memberId}"; // memberIdλ λ°μΈλ©, λλ¨Έμ§λ 쿼리 νλΌλ―Έν°λ‘ μ²λ¦¬
}
λ°μν