๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’Š Java & Kotlin & Spring/- spring framework +

[Spring & Springboot ๊ณตํ†ต] HTTP Method - POST

by Wonit 2020. 1. 24.
๋ฐ”๋กœ ์ „ ํฌ์ŠคํŠธ์—์„œ ์šฐ๋ฆฌ๋Š” HTTP Method-GET์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋Š”๋ฐ, Get ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด์„œ ๋ชจ๋ฅด๋Š” ๋…์ž๋ผ๋ฉด ํ•œ ๋ฒˆ ๊ฐ€๋ณ๊ฒŒ ์ฝ๊ณ  ์˜ค๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.

HTTP - POST

Post ๋ฉ”์„œ๋“œ๋Š” Form์„ ์ด์šฉํ•˜์—ฌ ์ •๋ณด๋ฅผ ๋ฐ›์„ ๋•Œ๋‚˜ ํ˜น์€ ajax์˜ ๋น„๋™๊ธฐํ™”๋ฅผ ํ•  ๋•Œ, ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰์— ์‚ฌ์šฉ๋œ๋‹ค. ์‚ฌ์‹ค Post๋กœ ๋ฐ›๋˜ Get์œผ๋กœ ๋ฐ›๋˜ ๋™์ผํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ Get๋งŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด ์กด์žฌํ•˜๊ณ  ๋˜ Post๋งŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด ์กด์žฌํ•˜๋Š”๋ฐ, ํฐ ํŠน์ง•์ด๋ผ๊ณ  ํ•จ์€ Post๋ฐฉ์‹์€ URL์— ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š๊ณ  RequestBody์— ๊ฐ์‹ธ์ ธ์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋œ๋‹ค.

Post Method๊ฐ€ ์ฃผ๋กœ ํ•˜๋Š” ์ผ์€?

Post๋‚˜ Get์ด๋‚˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋„˜๊ธฐ๋Š” ๊ฒƒ์€ ๋˜‘๊ฐ™์€๋ฐ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅผ๊นŒ

 

์ด ๊ฒƒ์„ ์•Œ๊ธฐ ์œ„ํ•ด์„œ Get์˜ ํŠน์ง•์ค‘ URL์— ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํฌํ•จ์‹œํ‚ค๋Š” ํŠน์„ฑ์„ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.


Post๋Š” RequestBody์— ๋‚ด์šฉ๋ฌผ์„ ์‹ค์–ด์„œ ๋ณด๋‚ธ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, ์ด๋Š” Get๊ณผ ์ „ํ˜€ ๋‹ค๋ฅธ ๋ฐฉ์‹์ด๋‹ค. URL์— ๋ฐ์ดํ„ฐ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์•„์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ๋˜‘๊ฐ™์€ URL์„ ์ฃผ๋”๋ผ๋„ ๋‹ค๋ฅธ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•ด ์ค„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

URL์˜ ๊ธธ์ด๋Š” ๊ณ ์ •์ ์ด์–ด์„œ, ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ธธ์ด๊ฐ€ ์ œํ•œ์ ์ธ ๋ฐ˜๋ฉด Post์˜ RequestBody์˜ ๊ธธ์ด๋Š” ๊ธธ๋˜ ์งง๋˜ ์ œ์•ฝ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

๊ทธ๋ž˜์„œ ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ๋˜๋ฉฐ, ์ด๋Ÿฌํ•œ ํŠน์„ฑ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์˜ ์ƒํƒœ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

Post Method๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•ด๋ณด์ž.

์ง€๋‚œ Get๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ controller ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์ž.

@RestController
@RequestMapping("/api")
public class TestPostController {
    @PostMapping("/intro")
    public String postMethod(@RequestBody String id){
        return id + "๋‹˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!";
    }
}

 

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ์ ์ด ํ•˜๋‚˜ ์žˆ๋‹ค.

 

Get ์—์„œ ์ƒ๊ฐ์„ ํ•ด๋ณด์ž. ์šฐ๋ฆฌ๊ฐ€ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋„˜๊ฒจ์ค„ ๋•Œ ์–ด๋–ป๊ฒŒ ํ–ˆ๋Š”๊ฐ€?

 

๊ทธ๋ ‡๋‹ค URL์— ํฌํ•จ์‹œ์ผœ์„œ ๋„ฃ์—ˆ์ง€๋งŒ Post๋Š” URL์— ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•˜์ง€ ๋ชปํ•œ๋‹ค. ๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? RequestBody๋ฅผ ๋งŒ๋“ค์–ด์„œ RequestBody์— ํฌํ•จ์‹œ์ผœ์•ผํ•˜๋Š”๋ฐ ๊ทธ ๊ณผ์ •์ด ๋ฐ”๋กœ 5๋ฒˆ์งธ ์ค„์— @RequestBody String id์ด๋‹ค.

 

๊ทธ๋Ÿผ ํ…Œ์ŠคํŠธ๋Š” ์–ด๋–ป๊ฒŒ?

 

์šฐ๋ฆฌ๊ฐ€ ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ๋•Œ URL์— ์ •๋ณด๋ฅผ ๋„˜๊ฒจ์ค„ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์ธ API Tester๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค

.

API-Tester์—์„œ ํ™ˆํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

์—ฌ๊ธฐ์„œ

์˜ ๊ฒฝ๋กœ๋กœ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋‚ ๋ ค๋ณด์ž.

 

๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ณด๋‚ผ ๋•Œ๋Š” ๊ธฐ๋ณธ ํ˜•ํƒœ์ธ JSON ํƒ€์ž…์œผ๋กœ ๋ณด๋‚ด์•ผ ํ•˜๋Š”๋ฐ, ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ์—ฐ๊ฒฐ์„ ์‹œ์ผœ์„œ

 

 

์œ„์™€ ๊ฐ™์ด ๋ณด๋‚ด๋ฉด

 

 

๊ณผ ๊ฐ™์ด 200 OK๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค.

 

๊ฐ์ฑ„ ํƒ€์ž…์œผ๋กœ ๋ณด๋‚ด๋ณด์ž!

์•„๊นŒ Get์—์„œ๋„ ์šฐ๋ฆฌ๋Š” ๊ฐ์ฒดํ˜•์‹์œผ๋กœ ๋ณด๋ƒˆ๋Š”๋ฐ ๊ทธ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ž ์‹œ ์ฐธ๊ณ ํ•˜์ž๋ฉด

 

    @GetMapping("/getMethod")
    public TestUser getRequest(TestUser testUser){
        return testUser;
    }

 

์œผ๋กœ @RequestParam์„ ์ƒ๋žตํ•˜๊ณ ๋„ ๊ฐ์ฒด๋ฅผ ๋ณด๋ƒˆ๋Š”๋ฐ, Post๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค. ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ RequestBody์— ๊ฐ์‹ธ์„œ ๋ณด๋‚ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— @RequestBody ์–ด๋…ธํ…Œ์ด์…˜์„ ๋ถ™ํ˜€์ค€๋‹ค.

 

    @PostMapping("/info")
    public UserInfo findInfo(@RequestBody UserInfo userInfo){
        return userInfo;
    }

 

๊ทธ๋ฆฌ๊ณ  API-Tester์„ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋ณด๋ฉด

 

Request

 

Response

 

๊ณผ ๊ฐ™์ด 200 OK๊ฐ€ ๋‚˜ํƒ€๋‚  ๊ฒƒ์ด๋‹ค.

๋Œ“๊ธ€