Skip to content

Latest commit

ย 

History

History
39 lines (30 loc) ยท 4.13 KB

File metadata and controls

39 lines (30 loc) ยท 4.13 KB

Q. entity์™€ model์€ ์™œ ๋‚˜๋‰˜์–ด ์žˆ๋‚˜์š”?

PostRequest์™€ Post๊ฐ€ ์œ ์‚ฌํ•˜๊ฒŒ ์ƒ๊ฒผ๋Š”๋ฐ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ Post๊ฐ์ฒด ๊ทธ๋Œ€๋กœ ์š”์ฒญ ๋ฐ›์•„์„œ Post๋ฅผ ๊ทธ๋Œ€๋กœ ์ €์žฅํ•˜๋ฉด ํŽธํ•˜๊ณ  ๊ด€๋ฆฌํ•  ํด๋ž˜์Šค๋„ ์ ์–ด์ง€์ง€ ์•Š์„๊นŒ์š”?

A. Entity์™€ DTO๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.

์šฐ์„  Entity์™€ DTO์˜ ์ •์˜๋ถ€ํ„ฐ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Entity๋Š” DB ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” ์ปฌ๋Ÿผ๋“ค์„ ํ•„๋“œ๋กœ ๊ฐ€์ง€๋Š” ๊ฐ์ฒด๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค. (์ฆ‰, Entity๋Š” DB ํ…Œ์ด๋ธ” ์„ค๊ณ„์™€ ๋™์ผํ•œ ๋ชจ์Šต์„ ํ•˜๊ณ ์žˆ๊ฒ ์ฃ .) Entity๋Š” DB ํ…Œ์ด๋ธ”๊ณผ 1:1 ๋Œ€์‘์ด๋ฉฐ, ํ…Œ์ด๋ธ”์„ ๊ฐ€์ง€์ง€ ์•Š๋Š” ์ปฌ๋Ÿผ์„ ํ•„๋“œ๋กœ ๊ฐ–์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

DTO๋Š” Data Transfer Object์˜ ์ค€๋ง๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณ„์ธต์„ ์˜ค๊ฐˆ ๋•Œ(transfer) ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. DTO๋Š” ๋กœ์ง์„ ๊ฐ–์ง€ ์•Š๋Š” ์ˆœ์ˆ˜ํ•œ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด์ด๋ฉฐ, getter/setter ๋ฉ”์„œ๋“œ๋งŒ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

Entity์™€ DTO๋ฅผ ๊ตฌ๋ถ„์ง€์–ด ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” '๊ฐ ๋ ˆ์ด์–ด๊ฐ„์˜ ์˜์กด๋„๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•จ'์ž…๋‹ˆ๋‹ค. ๋” ์‰ฝ๊ฒŒ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. Post์™€ Tag๋ฅผ ๊ฐ๊ฐ ์ €์žฅํ•˜๋„๋ก ํ…Œ์ด๋ธ”์„ ๋ณ„๋„๋กœ ์„ค๊ณ„ํ–ˆ๋‹ค๊ณ  ํ•ด๋ด…์‹œ๋‹ค.
    • ํ˜„์žฌ ์šฐ๋ฆฌ ์ฝ”๋“œ์—์„œ๋Š” Post์— Tag๋ฅผ ๊ฐ™์ด ์ €์žฅํ•˜๋„๋ก ํ–ˆ์ง€๋งŒ, Tag์˜ ๋‚ด์šฉ์ด ๋งŽ์•„ Post์™€ Tag๋ฅผ ๊ฐ๊ฐ ์ €์žฅํ•˜๋„๋ก ์„ค๊ณ„๋ฅผ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. Post์™€ Tag์˜ ํ…Œ์ด๋ธ”์€ ๋ถ„๋ฆฌํ–ˆ์ง€๋งŒ ๋ณดํ†ต ์šฐ๋ฆฌ๊ฐ€ ๊ฒŒ์‹œ๊ธ€์„ ์ž‘์„ฑํ•  ๋•Œ ํƒœ๊ทธ๋„ ํ•จ๊ป˜ ์ž‘์„ฑํ•˜๋‹ˆ Request Body๋„ Post์™€ Tag๋ฅผ ํ•œ ๋ฒˆ์— ๋ฐ›์•„์•ผ ์ข‹๊ฒ ์ฃ . Post ํด๋ž˜์Šค ํ•˜๋‚˜๋กœ ์š”์ฒญ๊ณผ DB ์ €์žฅ์„ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ–ˆ๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์€ ์ƒํ™ฉ ๋Œ€์ฒ˜๊ฐ€ ์–ด๋ ค์› ์„ํ…๋ฐ Post์™€ PostRequest๊ฐ€ ๋‚˜๋‰˜์–ด ์žˆ์œผ๋‹ˆ ์š”์ฒญ์€ ํ˜„์žฌ PostRequest๊ฐ€ ๋ฐ›๋˜๋Œ€๋กœ ๊ฒŒ์‹œ๊ธ€ ๋‚ด์šฉ๊ณผ Tag๋ฅผ ํ•จ๊ป˜ ๋ฐ›๊ณ  ์ €์žฅํ•  ๋•Œ Post์™€ Tag ์—”ํ‹ฐํ‹ฐ๋กœ ์ €์žฅํ•˜๋ฉด ์œ„์™€ ๊ฐ™์€ ์ƒํ™ฉ์— ๋Œ€์ฒ˜๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.
  2. ๊ธฐํš์ž๊ฐ€ ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ๊ณผ ๊ด€๋ จํ•œ ๊ธฐํš์„ ๋ณ€๊ฒฝํ•œ ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค.
    • ๊ธฐ๋Šฅ์˜ ์š”๊ตฌ์‚ฌํ•ญ์€ ์–ธ์ œ๋“  ์ถ”๊ฐ€/๋ณ€๊ฒฝ/์‚ญ์ œ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์š”์ฒญ์„ ๋ฐ›์•„์•ผํ•˜๋Š” ๊ฐ์ฒด์˜ ํ•„๋“œ์—๋„ ์ถ”๊ฐ€/๋ณ€๊ฒฝ/์‚ญ์ œ๊ฐ€ ์–ธ์ œ๋“  ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. PostRequest๊ฐ€ ์—†์—ˆ๋‹ค๋ฉด, Post ํด๋ž˜์Šค์˜ ํ•„๋“œ๊ฐ€ ์ˆ˜์‹œ๋กœ ๋ณ€๊ฒฝ๋˜์–ด DB์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. (์—†๋Š” ํ•„๋“œ๋ฅผ ์ €์žฅํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋˜์ง€ ๋“ฑ๋“ฑ)

Q. WebMVCConfig ํŒŒ์ผ์€ ์™œ ์žˆ๋‚˜์š”?

A. CORS์„ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค.

http://localhost:8080 ์ด๋ผ๋Š” url์ด ์žˆ๋‹ค๊ณ  ํ•ฉ์‹œ๋‹ค.

Origin์€ host๋ถ€๋ถ„์ธ localhost์™€ ํฌํŠธ์ธ 8080์„ ๋ชจ๋‘ ํ•ฉ์นœ ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. http://localhost:9090์€ ํฌํŠธ๊ฐ€ ๋‹ค๋ฅด๋‹ˆ Origin์ด ๊ฐ™๋‹ค๊ณ  ํ•  ์ˆ˜ ์—†์ฃ . ์„œ๋ฒ„๊ฐ€ ์ด๋ฏธ http://localhost:8080์—์„œ ๋Œ๊ณ  ์žˆ์œผ๋‹ˆ, ํ”„๋ก ํŠธ ํ”„๋กœ๊ทธ๋žจ์€ 8080ํฌํŠธ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ํฌํŠธ(์˜ˆ๋ฅผ๋“ค๋ฉด 9090)์—์„œ ๋Œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ณด์•ˆ์ƒ์˜ ์ด์œ ๋กœ SOP(Same Origin Policy) ์ •์ฑ…์„ ์š”๊ตฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋ก ํŠธ์—์„œ api๋ฅผ ํ†ตํ•ด ์ •๋ณด๋ฅผ ์–ป์–ด์™”์ง€๋งŒ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ •๋ณด๋ฅผ ์š”์ฒญํ•œ ์ชฝ(http://localhost:9090)๊ณผ ์ •๋ณด๋ฅผ ์ค€ ์ชฝ(http://localhost:8080)์˜ Origin์ด ๋‹ฌ๋ผ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜จ ์‘๋‹ต์„ ๊ฑฐ์ ˆํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์œ„์ฒ˜๋Ÿผ ์„œ๋กœ ๋‹ค๋ฅธ Origin๋ผ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์•„์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„์˜ ์˜ˆ์™ธ ์‚ฌํ•ญ์„ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. CORS๊ฐ€ ๋ฐ”๋กœ ์ด ์˜ˆ์™ธ์ƒํ™ฉ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. CORS(Cross Origin Resource Sharing)๋Š” ๋‹ค๋ฅธ Origin์œผ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ์ง€์ผœ์•ผํ•˜๋Š” ์ •์ฑ…์œผ๋กœ, ์›๋ž˜๋Œ€๋กœ๋ผ๋ฉด SOP์— ์˜ํ•ด ๋ง‰ํžˆ๊ฒŒ ๋  ์š”์ฒญ์„ ํ’€์–ด์ฃผ๋Š” ์ •์ฑ…์ž…๋‹ˆ๋‹ค. WebMvcConfig์—์„œ CORS๋ฅผ ์œ„ํ•ด ์ถ”๊ฐ€ํ•œ ํŒŒ์ผ์ด๋ผ๊ณ  ์•Œ์•„์ฃผ์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!(ํ”„๋ก ํŠธ ์ˆ˜์—…์„ ์œ„ํ•ด ์ถ”๊ฐ€ํ•œ ์„ค์ •ํŒŒ์ผ) - โ—๏ธํ”„๋ก ํŠธ์—”๋“œ ์ˆ˜์—…ํ•˜๋ ค๋ฉด ํ•ด๋‹น ํŒŒ์ผ์ด ํ•„์ˆ˜์ด๋‹ˆ ํ”„๋ก ํŠธ์—”๋“œ ์ˆ˜์—… ์ „๊นŒ์ง€ ๋ฐ˜๋“œ์‹œ pullํ•˜๊ธฐโ—๏ธ

๊ธ€์†œ์”จ๊ฐ€ ์—†์–ด ๊ฐ„๋‹จํžˆ ์ ์—ˆ์ง€๋งŒ, ํ† ์ดํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‹ค๋ณด๋ฉด ์ •๋ง ์ž์ฃผ ๋งˆ์ฃผ์น˜๋Š” ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๊ฐ€ CORS์ž…๋‹ˆ๋‹ค!!! ๊ธฐ๋ณธ์ ์ธ ์ง€์‹์ด๊ธฐ๋„ ํ•˜๋‹ˆ ์‹œ๊ฐ„๋˜์‹ค ๋•Œ ์•„๋ž˜์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฝ์–ด๋ณด์…”๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

๐Ÿ“Œ https://it-eldorado.tistory.com/163