PRG Pattern

PRG(Post-Redirect-Get) Pattern

  • POST ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋˜ ์ค‘ ์˜๋„์น˜ ์•Š๊ฒŒ ์š”์ฒญ์ด ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ„ด

  • FORM ๊ธฐ๋ฐ˜ ์š”์ฒญ์— ์˜ํ•œ POST๊ฐ€ ์ผ์–ด๋‚˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•œ ํŒจํ„ด์œผ๋กœ, ajax ์š”์ฒญ์—์„œ๋Š” ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

์‚ฌ์šฉ๋ฒ•

  1. POST ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ 3xx ์‘๋‹ต์„ ๋ณด๋‚ธ๋‹ค. (Post-Redirect)

    • ์ด ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ Location ํ—ค๋”์— ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋  url์„ ๋ช…์‹œํ•ด์•ผ ํ•œ๋‹ค. (HTTP Status Spec)

  2. ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฉด ์‘๋‹ต์— ๋ช…์‹œ๋œ url๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋˜๋ฉฐ, ๊ทธ ์ „์˜ ํŽ˜์ด์ง€๋Š” history์—์„œ ์ œ๊ฑฐ๋œ๋‹ค. (๋’ค๋กœ๊ฐ€๊ธฐ์— ์˜ํ•ด ์žฌ์š”์ฒญ์ด ๋ฐœ์ƒํ•  ์ผ๋„ ์—†์Œ)

์žฅ์ 

form ๊ธฐ๋ฐ˜ submit request์—์„œ ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•œ ๋‹ค์Œ์˜ ๋ฌธ์ œ๋ฅผ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์š”์ฒญ ๋„์ค‘ ์ƒˆ๋กœ๊ณ ์นจ ๋“ฑ์— ์˜ํ•ด ํ•ด๋‹น url๋กœ ์—ฌ๋Ÿฌ ๋ฒˆ POST ์š”์ฒญ์„ ๋ณด๋‚ด๊ฒŒ ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ, PRG ํŒจํ„ด์„ ์ด์šฉํ•˜๋ฉด ๋ฐ”๋กœ GET์œผ๋กœ ์š”์ฒญ์ด ๋ณ€๊ฒฝ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ๋ฒˆ ์š”์ฒญ์ด ๋ณด๋‚ด์ ธ๋„ ์ด ์š”์ฒญ์ด GET์ด๋ผ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค.

    • GET์€ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐœ์ƒํ•ด๋„ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณ€ํ™”์‹œํ‚ค์ง€ ์•Š๋Š” ์•ˆ์ „ํ•œ HTTP ๋ฉ”์†Œ๋“œ์— ํ•ด๋‹น

  • ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋ฅผ ํ†ตํ•ด url์ด ๋ณ€๊ฒฝ๋˜๊ฒŒ ๋˜๋ฉด ๊ทธ ์ „์˜ ์š”์ฒญ url์ด ๋ธŒ๋ผ์šฐ์ € history์— ์ €์žฅ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๋’ค๋กœ๊ฐ€๊ธฐ์— ์˜ํ•ด ์š”์ฒญ์ด ์žฌ๋ฐœ์ƒํ•  ์šฐ๋ ค๋„ ์—†๋‹ค.

  • ์š”์ฒญ์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณต์œ ํ•˜๊ณ ์ž ํ•  ๋•Œ์—๋„, POST ์š”์ฒญ์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์€ url์„ ํ†ตํ•œ ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”๋ฐ, ์ตœ์ข… ์š”์ฒญ์„ GET์œผ๋กœ ํ•จ์œผ๋กœ์จ ์ด ๋ฌธ์ œ๋„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

Last updated