PRG(Post-Redirect-Get) Pattern
POST ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ค ์๋์น ์๊ฒ
์์ฒญ์ด ์ฌ๋ฌ ๋ฒ ๋ฐ์ํ๋ ๊ฒ
์ ๋ฐฉ์งํ๊ธฐ ์ํ ํจํดFORM ๊ธฐ๋ฐ ์์ฒญ์ ์ํ POST๊ฐ ์ผ์ด๋๋ ๊ฒฝ์ฐ๋ฅผ ์ํ ํจํด์ผ๋ก, ajax ์์ฒญ์์๋ ์ฌ์ฉํ ํ์๊ฐ ์๋ค.
์ฌ์ฉ๋ฒ
POST ์์ฒญ์ ๋ํ ์๋ต์ผ๋ก 3xx ์๋ต์ ๋ณด๋ธ๋ค. (Post-Redirect)
์ด ๊ฒฝ์ฐ ๋ฐ๋์ Location ํค๋์ ๋ฆฌ๋ค์ด๋ ํธ๋ url์ ๋ช ์ํด์ผ ํ๋ค. (HTTP Status Spec)
์์ฒญ์ด ์ฑ๊ณต์ ์ผ๋ก ์ํ๋๋ฉด ์๋ต์ ๋ช ์๋ url๋ก ๋ฆฌ๋ค์ด๋ ํธ๋๋ฉฐ, ๊ทธ ์ ์ ํ์ด์ง๋ history์์ ์ ๊ฑฐ๋๋ค. (๋ค๋ก๊ฐ๊ธฐ์ ์ํด ์ฌ์์ฒญ์ด ๋ฐ์ํ ์ผ๋ ์์)
์ฅ์
form ๊ธฐ๋ฐ submit request์์ ๋ฐ์ ๊ฐ๋ฅํ ๋ค์์ ๋ฌธ์ ๋ฅผ ์๋ฐฉํ ์ ์๋ค.
์์ฒญ ๋์ค ์๋ก๊ณ ์นจ ๋ฑ์ ์ํด ํด๋น url๋ก ์ฌ๋ฌ ๋ฒ POST ์์ฒญ์ ๋ณด๋ด๊ฒ ๋ ์ ์๋๋ฐ, PRG ํจํด์ ์ด์ฉํ๋ฉด ๋ฐ๋ก GET์ผ๋ก ์์ฒญ์ด ๋ณ๊ฒฝ๋๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ๋ฒ ์์ฒญ์ด ๋ณด๋ด์ ธ๋ ์ด ์์ฒญ์ด GET์ด๋ผ ๋ฌธ์ ๊ฐ ์๋ค.
GET์ ์ฌ๋ฌ ๋ฒ ๋ฐ์ํด๋ ๋ฆฌ์์ค๋ฅผ ๋ณํ์ํค์ง ์๋
์์ ํ
HTTP ๋ฉ์๋์ ํด๋น
๋ฆฌ๋ค์ด๋ ํธ๋ฅผ ํตํด url์ด ๋ณ๊ฒฝ๋๊ฒ ๋๋ฉด ๊ทธ ์ ์ ์์ฒญ url์ด ๋ธ๋ผ์ฐ์ history์ ์ ์ฅ๋์ง ์๊ธฐ ๋๋ฌธ์, ๋ค๋ก๊ฐ๊ธฐ์ ์ํด ์์ฒญ์ด ์ฌ๋ฐ์ํ ์ฐ๋ ค๋ ์๋ค.
์์ฒญ์ ์ํด ์์ฑ๋ ๋ฆฌ์์ค๋ฅผ ๊ณต์ ํ๊ณ ์ ํ ๋์๋, POST ์์ฒญ์ ๊ฒฐ๊ณผ๋ฅผ ๊ณต์ ํ๋ ๊ฒ์ url์ ํตํ ๋ฆฌ์์ค ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋ค๋ ๋ฌธ์ ๊ฐ ์๋๋ฐ, ์ต์ข ์์ฒญ์ GET์ผ๋ก ํจ์ผ๋ก์จ ์ด ๋ฌธ์ ๋ ํด๊ฒฐํ ์ ์๋ค.
Last updated