๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์ „์ฒด ๊ธ€ (165)

Today, I will

[์Šคํ”„๋ง๋ถ€ํŠธ] ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ฅธ ํšŒ์›๊ฐ€์ž… api ์ž‘์„ฑ

DTO, Controller, ์ˆœ์œผ๋กœ ์ž‘์„ฑํ•˜๋„๋ก ํ•œ๋‹ค. 1. ํšŒ์›๊ฐ€์ž… ์š”๊ตฌ์‚ฌํ•ญ ํ™•์ธ 2. ํšŒ์›๊ฐ€์ž… api ์ž‘์„ฑ (DTO) ํšŒ์›๊ฐ€์ž…์ด๋ž€, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์‚ฌ์šฉ์ž๋ฅผ ๋“ฑ๋กํ•˜๋Š” ํ–‰์œ„์ด๋‹ค. ์ด์ œ ํšŒ์›๊ฐ€์ž…์— ๋Œ€ํ•œ api๋ฅผ ์ž‘์„ฑํ•ด๋ณด๋„๋ก ํ•œ๋‹ค. http POST ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ†ต์‹ ์„ ํ•  ๊ฒƒ์ด๋‹ค. POST ๋ฉ”์†Œ๋“œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌํ€˜์ŠคํŠธ ๋ฐ”๋””์— ๋‹ด์•„์„œ ์ „๋‹ฌํ•ด์ค€๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ๋ฅผ ์ˆจ๊ฒจ์„œ ๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ์— GET๋ณด๋‹ค ๋ณด์•ˆ์— ์กฐ๊ธˆ ๋” ์œ ๋ฆฌํ•œ ๋ถ€๋ถ„์ด ์žˆ๋‹ค. ํšŒ์›๊ฐ€์ž…์„ ํ•  ๋•Œ์—๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฉ”์ผ ์ฃผ์†Œ์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ, ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ, ๋‹‰๋„ค์ž„, ํ•ธ๋“œํฐ๋ฒˆํ˜ธ, ์ฃผ์†Œ, ์ƒ์„ธ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ด์„œ ํšŒ์›๊ฐ€์ž…์„ ์ง„ํ–‰ํ•œ๋‹ค. (1) 3000๋ฒˆ ํฌํŠธ POST ๋ฆฌํ€˜์ŠคํŠธ ๋งคํ•‘์€ /api/auth/signUp (2) ๋ฆฌํ€˜์ŠคํŠธ ๋ฐ”๋””์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ธฐ ( userEmail,..

[์Šคํ”„๋ง๋ถ€ํŠธ, ๋ฆฌ์•กํŠธ] ์›น๊ฐœ๋ฐœ ๋ฐฐ๊ฒฝ์ง€์‹(1) HTTP ๋ฉ”์„œ๋“œ์™€ ์‘๋‹ต์ฝ”๋“œ, ์ง๋ ฌํ™”/์—ญ์ง๋ ฌํ™”

*๊น€๋‹ค์ • ์ €, React ์Šคํ”„๋ง ๋ถ€ํŠธ AWS๋กœ ๋ฐฐ์šฐ๋Š” ์›น ๊ฐœ๋ฐœ 101์„ ํ•™์Šตํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค HTTP ๋ฉ”์„œ๋“œ์™€ ๊ธฐ๋Šฅ ๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์†Œ์ฐฝ์— URL์„ ์น˜๊ณ  ์—”ํ„ฐ๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” HTTP GET ์š”์ฒญ์„ ํ•ด๋‹น URL ์„œ๋ฒ„๋กœ ์ „์†กํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ฒฐ๊ณผ์ธ HTTP ์‘๋‹ต์„ ๋ธŒ๋ผ์šฐ์ €์— ๋ Œ๋”๋ง(ํ™”๋ฉด์— ๋””์Šคํ”Œ๋ ˆ์ด)ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. HTTP ์š”์ฒญ์—๋Š” GET, POST, PUT, DELETR์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฉ”์„œ๋“œ๋Š” ํ˜ธ์ŠคํŠธ์—๊ฒŒ ์ง€์ •ํ•œ ๋ฆฌ์†Œ์Šค์— ์–ด๋–ค ์ž‘์—…์„ ํ•˜๊ณ  ์‹ถ์€์ง€ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์•„๋ž˜๋Š” ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ๊ฐœ๋ฐœํ•  HTTP ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ„๋žตํžˆ ์š”์•ฝํ•œ ๊ฒƒ์ด๋‹ค. ๋ฉ”์„œ๋“œ ๊ธฐ๋Šฅ GET ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉ POST ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ์ž„์˜์˜ ์ž‘์—…(์˜ˆ, ์ƒ์„ฑ, ์ˆ˜์ •)์„ ํ•  ๋•Œ ์‚ฌ์šฉ PUT ๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€์ฒดํ•  ..

[Node, Vue] ํด๋ก ์ฝ”๋”ฉ Zoom(5) ์ฑ„ํŒ…๋ฃธ์—์„œ ๋‹‰๋„ค์ž„ ๋‹ฌ๊ณ  ๋ฉ”์‹œ์ง€ ์ฃผ๊ณ  ๋ฐ›๊ธฐ

* ๋…ธ๋งˆ๋“œ ์ฝ”๋”์˜ Do it! ํด๋ก ์ฝ”๋”ฉ ์คŒ ์ฑ…์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. 1. disconnecting ์ด๋ฒคํŠธ ์ดํ•ดํ•˜๊ธฐ ์ฑ„ํŒ…๋ฃธ์„ ๋‚˜๊ฐˆ ๋•Œ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋„๋ก ํ•œ๋‹ค. ์ด๋•Œ ์‚ฌ์šฉํ•  socket.io์˜ ์ด๋ฒคํŠธ๋Š” disconnecting์ด๋‹ค. disconnecting ์ด๋ฒคํŠธ๋Š” ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์„ ๋‹ซ๊ฑฐ๋‚˜ ์ปดํ“จํ„ฐ๋ฅผ ๊บผ์„œ ์ฑ„ํŒ…๋ฃธ์„ ๋‚˜๊ฐ€๊ธฐ ์ง์ „์— ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ์ด๋‹ค. ์ด๋ฅผ ์ด์šฉํ•˜๋ฉด ์ฑ„ํŒ…๋ฃธ์„ ๋น ์ ธ๋‚˜๊ฐ€๊ธฐ ์ง์ „์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋ฉ”์‹œ์ง€ ์ „์†ก ๋ฐฉ์‹์€ ์ฑ„ํŒ…๋ฃธ์— ์ ‘์†ํ•  ๋•Œ์™€ ๊ฑฐ์˜ ๊ฐ™๋‹ค. (1) ์„œ๋ฒ„ ์ฝ”๋“œ ๋ณ€๊ฒฝ wsServer.on('connection',(socket)=>{ //console.log(socket); socket.on('enter_room',(roomName, done)=>{ done(); //co..

Node 2023. 6. 5. 05:34
[์Šคํ”„๋ง๋ถ€ํŠธ] ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์™€ OAuth 2.0์œผ๋กœ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ

*์ด๋™์šฑ ์ €, ์Šคํ”„๋ง๋ถ€ํŠธ์™€ aws๋กœ ํ˜ผ์ž ๊ตฌํ˜„ํ•˜๋Š” ์›น์„œ๋น„์Šค๋ฅผ ํ•™์Šตํ•˜๋ฉด์„œ ์ž‘์„ฑํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. 1. ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์™€ OAuth ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ(Spring Security)๋Š” ๋ง‰๊ฐ•ํ•œ ์ธ์ฆ๊ณผ ์ธ๊ฐ€(ํ˜น์€ ๊ถŒํ•œ ๋ถ€์—ฌ) ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. ์‚ฌ์‹ค์ƒ ์Šคํ”„๋ง ๊ธฐ๋ฐ˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ๋ณด์•ˆ์„ ์œ„ํ•œ ํ‘œ์ค€์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. ์ธํ„ฐ์…‰ํ„ฐ, ํ•„ํ„ฐ ๊ธฐ๋ฐ˜์˜ ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ์ ๊ทน์ ์œผ๋กœ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๋‹ค. ์Šคํ”„๋ง ๋Œ€๋ถ€๋ถ„ ํ”„๋กœ์ ํŠธ๋“ค(Mvc, Data, Batch ๋“ฑ)์ฒ˜๋Ÿผ ํ™•์žฅ์„ฑ์„ ๊ณ ๋ คํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค ๋ณด๋‹ˆ ๋‹ค์–‘ํ•œ ์š”๊ตฌ์‚ฌํ•ญ์„ ์†์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ ์‰ฌ์šด ์„ค์ •์€ ํŠนํžˆ๋‚˜ ์Šคํ”„๋ง ๋ถ€ํŠธ 1.5์—์„œ 2.0์œผ๋กœ ๋„˜์–ด์˜ค๋ฉด์„œ ๋”์šฑ ๋” ๊ฐ•๋ ฅํ•ด์กŒ๋‹ค. ์ด๋ฒˆ ์žฅ์—์„œ๋Š” ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์™€ OA..

[MySQL] w3schools ๋ฐ MySQL ์›Œํฌ๋ฐด์น˜์—์„œ Try mysql (SELECT๋ฌธ, INSERT INTO๋ฌธ, UPDATE๋ฌธ, DELETE๋ฌธ)

1. SQL ๋ชจ๋“  ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์€ SQL๋ฌธ์„ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ฒŒ๋”, ์ œ๊ณต ํ•ด์ค€๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ทฐ์—์„œ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ฒ ๋‹ค๊ณ  ์ž…๋ ฅํ•˜๊ณ  ์ƒ์„ฑ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๊ฒŒ ๋  ๊ฒƒ์ด๊ณ , ์„œ๋ฒ„์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ์ „์†กํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์„œ ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ์•„๋ž˜์„œ ๋ฐฐ์šฐ๊ฒŒ๋  sql๋ฌธ์„ ์‹คํ–‰ํ•ด์„œ ํด๋ผ์—์„œ ๋˜์ ธ์ค€ ๊ฐ’๋“ค์„ ๋งคํ•‘ํ•ด์„œ ํ…Œ์ด๋ธ”์— ๋„ฃ์œผ๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋“ฑ๋ก๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ์ฟผ๋ฆฌ๋ฌธ์€ nodeJs๋‚˜ Java์—์„œ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ์ •๋ง ์–ด๋ ค์šด ํ”„๋กœ์ ํŠธ(ํ†ต๊ณ„ ์‹œ์Šคํ…œ ๊ตฌ์ถ• ๊ฐ™์€ ๊ฒฝ์šฐ๋Š”, 100~200์ค„ ๊ธฐ๋ณธ)์—์„œ๋Š” ๋ฐ์ดํ„ฐ ํ•˜๋‚˜ ์กฐํšŒํ•˜๋Š”๋ฐ ์ฟผ๋ฆฌ๋ฌธ์„ ์ฒœ์ค„ ์งœ์•ผํ•  ์ˆ˜๋„ ์žˆ๋‹ค! ํŠนํžˆ Select ์ฟผ๋ฆฌ๋ฌธ์€ ์ž˜๋ชป ์งœ๋ฉด 1๋ถ„ ๋งŒ์— ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์ฐพ๋Š”๋ฐ ๋ช‡์‹ญ๋ถ„์ด ๊ฑธ๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์‹ค ํ†ต๊ณ„ ์‹œ์Šคํ…œ๊ฐ™์€ ๊ฒƒ์ด ์•„๋‹Œ ์ด..

[์Šคํ”„๋ง๋ถ€ํŠธ] Spring Data JPA ์ ์šฉ(3) Spring ์›น ๊ณ„์ธต์— ๋Œ€ํ•œ ์ดํ•ด์™€ ๊ฒŒ์‹œ๊ธ€ ๋“ฑ๋ก ๊ธฐ๋Šฅ

*์ด๋™์šฑ ์ €, ์Šคํ”„๋ง๋ถ€ํŠธ์™€ aws๋กœ ํ˜ผ์ž ๊ตฌํ˜„ํ•˜๋Š” ์›น์„œ๋น„์Šค๋ฅผ ํ•™์Šตํ•˜๋ฉด์„œ ์ž‘์„ฑํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. 1. Spring ์›น ๊ณ„์ธต API๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ด 3๊ฐœ์˜ ํด๋ž˜์Šค๊ฐ€ ํ•„์š”ํ•˜๋‹ค. - Request ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ Dto - API ์š”์ฒญ์„ ๋ฐ›์„ Controller - ํŠธ๋žœ์žญ์…˜, ๋„๋ฉ”์ธ ๊ธฐ๋Šฅ ๊ฐ„์˜ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๋Š” Service (ํŠธ๋žœ์žญ์…˜์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ ์กฐ์ž‘ ์ž‘์—…์˜ ๋…ผ๋ฆฌ์ ์ธ ๋‹จ์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐœ๋…) DTO๋ž€... DTO๋Š” "Data Transfer Object"์˜ ์•ฝ์ž, ๋ฐ์ดํ„ฐ ์ „์†ก ๊ฐ์ฒด. ์Šคํ”„๋ง ๋ถ€ํŠธ์—์„œ๋Š” ์ฃผ๋กœ DTO ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ. DTO๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด๋‚˜ ๋„๋ฉ”์ธ ๋กœ์ง์„ ํฌํ•จํ•˜์ง€ ์•Š๊ณ , ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ. ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€..

[์Šคํ”„๋ง๋ถ€ํŠธ] Spring Data JPA ์ ์šฉ(2) JpaRepository ์ƒ์„ฑ

*์ด๋™์šฑ ์ €, ์Šคํ”„๋ง๋ถ€ํŠธ์™€ aws๋กœ ํ˜ผ์ž ๊ตฌํ˜„ํ•˜๋Š” ์›น์„œ๋น„์Šค๋ฅผ ํ•™์Šตํ•˜๋ฉด์„œ ์ž‘์„ฑํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. 1. JpaRepository ์ƒ์„ฑ ์•ž์„œ Posts ํด๋ž˜์Šค ์ƒ์„ฑ์ด ๋๋‚ฌ์œผ๋ฏ€๋กœ, Posts ํด๋ž˜์Šค๋กœ Database๋ฅผ ์ ‘๊ทผํ•˜๊ฒŒ ํ•ด ์ค„ JpaRepository๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. JpaRepository์™€ DAO๋Š” ๋‘˜ ๋‹ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB) ๋ ˆ์ด์–ด์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์ ‘๊ทผ์ž์ด๋‹ค. JPA์—์„  Repository๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ƒ์„ฑํ•œ๋‹ค. ๋‹จ์ˆœํžˆ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑ ํ›„, JpaRepository์„ ์ƒ์†ํ•˜๋ฉด ๊ธฐ๋ณธ์ ์ธ CRUD ๋ฉ”์†Œ๋“œ๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค. @Repository๋ฅผ ์ถ”๊ฐ€ํ•  ํ•„์š”๋„ ์—†๋‹ค. ๋‹ค๋งŒ ์ฃผ์˜ํ•  ์ ์€ Entity ํด๋ž˜์Šค์™€ ๊ธฐ๋ณธ Entity Repository๋Š” ํ•จ๊ป˜ ์œ„์น˜ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. ๋‘˜์€ ์•„์ฃผ ๋ฐ€์ ‘ํ•˜๊ณ ,..