๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ/Web

[Web] PRG ํŒจํ„ด (Post - Redirect - Get)

by ynzu๐Ÿค 2022. 1. 7.
๋ฐ˜์‘ํ˜•

PRG ํŒจํ„ด์ด๋ž€?

Post -> Redirect -> Get ํŒจํ„ด์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฒƒ์„ ๋งํ•˜๋ฉฐ, ๊ถŒ์žฅ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜๋‹ค.

 

PRG ํŒจํ„ด์˜ ํ•„์š”์„ฑ

์˜ˆ๋ฅผ ๋“ค์–ด ์ƒํ’ˆ ํŒ๋งค ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ•˜์ž. 

์ฃผ๋ฌธ ํŽ˜์ด์ง€๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , Post ๋ฐฉ์‹์œผ๋กœ ๊ฒฐ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•  ๊ฒฝ์šฐ ๊ฒฐ์ œ ์™„๋ฃŒ ํŽ˜์ด์ง€์—์„œ ์‹ค์ˆ˜ ํ˜น์€ ์˜๋„์ ์œผ๋กœ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์„œ๋ฒ„์— ์ „์†กํ–ˆ๋˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์ „์†กํ•˜๊ฒŒ ๋˜์–ด ์ค‘๋ณต ๊ฒฐ์ œ ์ฒ˜๋ฆฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

์ž์„ธํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ์•„๋ž˜ ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ•˜์ž

 

[WEB] PRGํŒจํ„ด

PRG(Post-Redicet-Get)ํŒจํ„ด์€ ์›น ๊ฐœ๋ฐœ์‹œ ์‚ฌ์šฉ ๊ถŒ์žฅ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ๋’ค๋กœ๊ฐ€๊ธฐ, ์ƒˆ๋กœ๊ณ ์นจ์œผ๋กœ ์ธํ•œ ์ค‘๋ณต์ž…๋ ฅ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. EX) ์ƒํ’ˆ์ฃผ๋ฌธ PRGํŒจํ„ด ์ ์šฉ ์ „ ์‚ฌ์šฉ์ž๊ฐ€ ์ƒํ’ˆ ์ฃผ๋ฌธ

juinor.tistory.com

 

PRG ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์œ„์™€ ๊ฐ™์€ ์ƒˆ๋กœ๊ณ ์นจ์œผ๋กœ ์ธํ•œ ์ค‘๋ณต ์š”์ฒญ ์ด์Šˆ๋„ ์žˆ๊ณ , ์š”์ฒญ ๊ฒฐ๊ณผ์— ํ•ด๋‹นํ•˜๋Š” ํŽ˜์ด์ง€๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ค์›Œ์ง„๋‹ค๋Š” ๋ฌธ์ œ์ ์ด ์žˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ์ž๋Š” URL๋งŒ ๊ฐ€์ง€๊ณ ๋Š” GET ๋ฐฉ์‹์˜ ์š”์ฒญ ๋ฐ–์— ํ•  ์ˆ˜ ์—†์–ด POST ๋ฐฉ์‹์˜ URL์€ ๊ณต์œ ํ•˜๋”๋ผ๋„ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค.

 

๊ฐ„๋‹จํ•˜๊ฒŒ PRG ํŒจํ„ด ์ ์šฉ ์ „, ํ›„์˜์†Œ์Šค๋ฅผ ๋น„๊ตํ•ด๋ณด์ž.

 

PRG ํŒจํ„ด ์ ์šฉ ์ „ ์†Œ์Šค

@Controller
class TestController {

    @GetMapping("/order")
    public String order(){
		//์ฃผ๋ฌธ ํŽ˜์ด์ง€ ํ˜ธ์ถœ
        return "order";
    }

    @PostMapping("/buy")
    public String buy(){
        // ๊ฒฐ์ œ ์ฒ˜๋ฆฌ
        return "result message"; //๊ฒฐ์ œ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ด
    }
}

PRG ํŒจํ„ด ์ ์šฉ ์ „ ์†Œ์Šค
์‚ฌ์šฉ์ž๊ฐ€ ๊ฒฐ์ œ๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด 'xxx.com/buy' ๋ผ๋Š” url์ด ํ˜ธ์ถœ๋˜๋ฉฐ, ๊ฒฐ์ œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ง„ํ–‰๋˜๊ณ , ๊ฒฐ์ œ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๊ฐ€ ๋ฆฌํ„ด๋œ๋‹ค.
ํ•˜์ง€๋งŒ url์€ 'xxx.com/buy'๋กœ ๋™์ผํ•˜๊ฒŒ ๋‚จ์•„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ๊ณ ์นจํ–ˆ์„ ๊ฒฝ์šฐ ๋‹ค์‹œ ๊ฒฐ์ œ ์š”์ฒญ์ด ๋˜๋ฉฐ ์ค‘๋ณต ๊ฒฐ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

 

PRG ํŒจํ„ด ์ ์šฉ ํ›„ ์†Œ์Šค

@Controller
class TestController {

    @GetMapping("/order")
    public String order(){
		//์ฃผ๋ฌธ ํŽ˜์ด์ง€ ํ˜ธ์ถœ
		return "order";
    }

    @PostMapping("/buy")
    public String buy(){
		// ๊ฒฐ์ œ ์ฒ˜๋ฆฌ
		return "redirect:/buy-result";
		
    }

    @GetMapping("/buy-result")
    public String buyResult(){
		//๊ฒฐ์ œ ๊ฒฐ๊ณผ ํŽ˜์ด์ง€ ํ˜ธ์ถœ
		return "buyResult";
    }
}

 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€