๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿคท๐Ÿผ‍โ™€๏ธ Etc.../- ๊ธฐํƒ€

[์•„ํ‹ฐํด ๋ฆฌ๋ทฐ] ํ† ์Šค ํŽ˜์ด๋จผ์ธ -๋ฉฑ๋“ฑ์„ฑ์ด ๋ญ”๊ฐ€์š”?

by Wonit 2023. 1. 15.

ํ•ด๋‹น ๊ธ€์€ ๊ฐœ๋ฐœ, ๊ธฐ์ˆ ๊ด€๋ จ ์•„ํ‹ฐํด์ด๋‚˜ ๋ธ”๋กœ๊ทธ ๊ธ€ ํ˜น์€ ์œ ํŠœ๋ธŒ ์˜์ƒ์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๊ฑฐ๋‚˜ ํ›„๊ธฐ๋ฅผ ์ ๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค.

 

๋ฆฌ๋ทฐํ•  ๊ธ€: tosspayments velog ์˜ '๋ฉฑ๋“ฑ์„ฑ์ด ๋ญ”๊ฐ€์š”?'

 

๋ฉฑ๋“ฑ์„ฑ์ด ๋ญ”๊ฐ€์š”?

์ƒ์†Œํ•œ ํ‘œํ˜„์ด์ง€๋งŒ ์•Œ๊ณ  ๋ณด๋ฉด ์‰ฌ์›Œ์š”. ๋ฉฑ๋“ฑ์„ฑ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  API๋ฅผ ๋ฉฑ๋“ฑํ•˜๊ฒŒ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•๋„ ํ•จ๊ป˜ ์•Œ์•„๋ด์š”.

velog.io

 

๊ธ€์˜ ์š”์•ฝ

 

  • ๋ฉฑ๋“ฑํ•˜๋‹ค๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ธ๊ฐ€?
    • ์ฒซ ๋ฒˆ์งธ ์ˆ˜ํ–‰์„ ํ•œ ๋’ค, ์—ฌ๋Ÿฌ ์ฐจ๋ก€ ์ˆ˜ํ–‰ํ•ด๋„ ๊ฒฐ๊ณผ๋ฅผ ๋ณ€๊ฒฝ์‹œํ‚ค์ง€ ์•Š๋Š” ๊ฒƒ
  • ๋ฉฑ๋“ฑ์„ฑ์˜ ์žฅ์ 
    • ๋™์ผํ•œ ์š”์ฒญ์„ ๋‘ ๋ฒˆ ํ•˜๋”๋ผ๋„ ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ ์ƒํƒœ๋ฅผ ํ•œ ๋ฒˆ๋งŒ ๋ณ€๊ฒฝํ•˜๊ธฐ์— ์˜๋„ํ•˜์ง€ ์•Š์€ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค์ง€ ์•Š๋Š”๋‹ค
    • ์•ˆ์ „ํ•œ API ๋ฅผ ๋งŒ๋“œ๋Š” ๊ธธ
  • ๋ฉฑ๋“ฑํ‚ค๋ฅผ ์ด์šฉํ•ด์„œ API ์—์„œ ๋ฉฑ๋“ฑ์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค
    • ๋ฉฑ๋“ฑํ‚ค์— ๋Œ€ํ•œ ๊ธฐ๋ก์„ ํ†ตํ•ด์„œ ๋ฉฑ๋“ฑ์„ฑ์„ ๋ณด์žฅ
      • ํด๋ผ์ด์–ธํŠธ ๋‹จ์—์„œ ๋ฉฑ๋“ฑํ‚ค๋ฅผ ์ƒ์„ฑํ•ด์„œ ํ—ค๋”์— ๋ถ™์ž„
    • ๋ฉฑ๋“ฑํ‚ค์— ์ €์žฅ๋œ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•จ

 

๋ฆฌ๋ทฐ์™€ ๋‚˜์˜ ํ•ด์„

 

  • ์•Œ๊ฒŒ๋œ ๊ฒƒ
    • get ๊ณผ put ์€ ๋ฉฑ๋“ฑํ•˜์ง€๋งŒ post ๋‚˜ patch ๋Š” ๋ฉฑ๋“ฑํ•˜์ง€ ์•Š๋‹ค
      • ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋ฉฑ๋“ฑ์„ ์ œ๊ณตํ•˜๊ณ ์‹ถ๋‹ค๋ฉด ์„œ๋ฒ„์—์„œ ๋ฉฑ๋“ฑํ•จ์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค
    • HTTP ๋ฉ”์„œ๋“œ์˜ ์•ˆ์ „์„ฑ๊ณผ ๋ฉฑ๋“ฑ์„ฑ์€ ์„œ๋กœ ๋‹ค๋ฅด๋‹ค
      • ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์ฐธ์กฐ ํˆฌ๋ช…์„ฑ
  • ์•Œ๊ฒŒ๋œ ํ‚ค์›Œ๋“œ
    • ๋ฉฑ๋“ฑํ‚ค
    • 422 Unprocessable Entity : ์žฌ์‹œ๋„๋œ ์š”์ฒญ์ด ์ฒ˜์Œ ์š”์ฒญ๊ณผ ๋‹ค๋ฅธ๋ฐ ๊ฐ™์€ ๋ฉฑ๋“ฑํ‚ค๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ
    • 409 Conflict : ์ด์ „ ์š”์ฒญ ์ฒ˜๋ฆฌ๊ฐ€ ์•„์ง ์ง„ํ–‰์ค‘์ธ๋ฐ ๊ฐ™์€ ๋ฉฑ๋“ฑํ‚ค๋กœ ์ƒˆ๋กœ์šด ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ

 

ํ›„๊ธฐ

 

์šฐ์„  ์ด ๊ธ€์„ ์ฝ๊ณ  ๊ฐ€์žฅ ๋จผ์ € ์ƒ๊ฐ๋‚ฌ๋˜ ๊ฒƒ์€ 'ํ† ์Šค๋ฑ…ํฌ ๋ฉด์ ‘' ์ด์—ˆ๋‹ค

 

๊ณผ๊ฑฐ ํ† ์Šค๋ฑ…ํฌ ๋ฉด์ ‘๋•Œ ๋‚˜๋Š” ์ด๋Ÿฐ ์งˆ๋ฌธ์„ ๋ฐ›์•˜๋˜ ์ ์ด ์žˆ๋‹ค

 

ํ™˜๋ถˆ ๋ชจ๋“ˆ์„ ๋งŒ๋“œ์…จ๋‹ค๊ณ  ํ•˜์…จ๋Š”๋ฐ, ๋™์ผํ•œ ์š”์ฒญ์ด ์—ฐ์†ํ•ด์„œ ๋“ค์–ด์˜ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•˜์ง€์š”?

 

์ด ์งˆ๋ฌธ์„ ๋“ฃ๊ณ  ๋‚˜๋Š” ๋ฐ”๋กœ ๋ฉฑ๋“ฑ์„ฑ์— ๋Œ€ํ•ด์„œ ์ฃผ์ €์—†์ด ์ด์•ผ๊ธฐํ–ˆ๊ณ  ๊ฐ•์กฐํ–ˆ์ง€๋งŒ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•  ๊ฒƒ์ธ๊ฐ€? ์— ๋Œ€ํ•œ ๋‹ต์€ ํ•˜์ง€ ๋ชปํ•˜์˜€๋‹ค.

 

๊ทธ๋ƒฅ ๋ฉฑ๋“ฑํ•œ api ๊ฐ€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค! ์ด์œ ๋Š” ๋ฉฑ๋“ฑํ•œ api ๊ฐ€ ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค! ๋ผ๋Š” ์‹์œผ๋กœ ๋Œ€๋‹ตํ–ˆ๋˜๊ฒƒ ๊ฐ™๋‹ค

 

์ด ๊ธ€์—์„œ๋Š” ์‹ค์ œ๋กœ ๋ฉฑ๋“ฑํ•œ API ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ how to ๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๊ธ€์ด์—ˆ๋˜๊ฒƒ ๊ฐ™๋‹ค.

 

๋ฉฑ๋“ฑ์„ฑ๊ณผ ์ฐธ์กฐ ํˆฌ๋ช…์„ฑ

 

๋˜ํ•œ ๋‚˜๋Š” ๋ฉฑ๋“ฑ์„ฑ๊ณผ ์ฐธ์กฐ ํˆฌ๋ช…์„ฑ ์‚ฌ์ด์˜ ๊ด€๊ณ„์— ๋Œ€ํ•ด์„œ ๋ชจํ˜ธํ•œ ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋‹ค.

 

์ฐธ์กฐ ํˆฌ๋ช…์„ฑ์— ๋Œ€ํ•ด์„œ๋Š” ํ•ด๋‹น ๋ธ”๋กœ๊ทธ ๊ธ€์ธ Spring Data ๋ชจ๋“ˆ์˜ save() ๋Š” CQS ๋ฅผ ์ง€ํ‚ค์ง€ ์•Š๋Š” ๊ฒƒ์ผ๊นŒ? with ์ฐธ์กฐํˆฌ๋ช…์„ฑ ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด ๊ธ€์„ ์ฝ๊ณ  ์ฐธ์กฐํˆฌ๋ช…์„ฑ๊ณผ ๋ฉฑ๋“ฑ์„ฑ์— ๋Œ€ํ•œ ์ฐจ์ด๋ฅผ ํ™•์‹คํžˆ ์ดํ•ดํ–ˆ๋‹ค.

 

์ฐธ์กฐํˆฌ๋ช…์„ฑ์€ ์˜คํžˆ๋ ค ์•ˆ์ •์„ฑ๊ณผ ๊ด€๋ จ์ด ๊นŠ๊ตฌ๋‚˜..

 

๋Œ“๊ธ€