REST API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„ ์„ค๊ณ„ ๋ฐ ๊ตฌ์ถ•ํ•˜๊ธฐ #_0

๐Ÿ”ฅ ๋‚ด์šฉ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ๋ณ„ ๊ด€๋ จ์—†๋Š” ์ฃผ์ ˆ์ฃผ์ ˆ์ž„

 

๋‚ด์šฉ๊ณผ ๋ณ„ ๊ด€๋ จ์—†๋Š” ๊ท€์—ฌ์šด๊ฑฐ ;;

์–ด์ œ์— ์ด์–ด ์˜ค๋Š˜๋„ ๋‚ด๊ฐ€ ๋ฒŒ๋ ค๋†“์€ ํ”„๋กœ์ ํŠธ ์ค‘ ํ•˜๋‚˜์ธ ๋‚ด์šฉ์„ ๊ธฐ๋กํ•ด๋ณด๊ณ ์ž ๋‹ค์‹œ ์™”๋‹ค .. ์•„๋ฌด๋ž˜๋„ ๋‚œ ์„ธ๋ฏธ๊ด€์ข…์— ํ”„๋กœ๋ธ”๋กœ๊ฑฐ์ธ๊ฐ€๋ณด๋‹ค ใ…Žใ…Ž ์•„๋ƒ .. ๋ธ”๋กœ๊ทธ์— ๊ธฐ๋กํ•˜๋ฉด ์ข‹์ง€... ์ข‹์•„.... ๋‚˜์ค‘์— ๋ณด๋ฉด ์žฌ๋ฐŒ๊ณ ... ์—„ ๊ทธ๋ ‡์ง€ ใ…Žใ…Ž ์ž‘๋…„์— ํšŒ์‚ฌ ๊ณผ์ œ ํ”„๋กœ์ ํŠธ ํ•  ๋•Œ ์—ด์‹ฌํžˆ ๊ฐœ๋ฐœ์ผ์ง€์ป๋˜ ๊ฒƒ์ด ๊ฐ‘์ž๊ธฐ ์ƒ๊ฐ๋‚˜์„œ ์—ด์‹ฌํžˆ ๊ฐœ๋ฐœ์ผ์ง€ ์จ๋ณด๊ณ ์ž ์ด๋ ‡๊ฒŒ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์ž„ ^__^

 

๊ทธ๋ž˜์„œ ์ด๋ฒˆ์— ๊ธฐ๋กํ•  ํ”„๋กœ์ ํŠธ๋Š” ์›น์•ฑ์ด ๋ชฉํ‘œ๊ณ , ์‹ค์ œ ์„œ๋น„์Šค ์šด์˜์ด ์ตœ์ข…๋ชฉํ‘œ์ž„ ใ…‡ใ……ใ…‡ ๐Ÿ‘๐Ÿป ์ด ๊ธฐํš์€ ๋ญ”๊ฐ€ ์˜›๋‚ ๋ถ€ํ„ฐ ๋‚ด๊ฐ€ ์“ฐ๋ ค๊ณ  ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ๋˜ ๊ฑด๋ฐ ๊ณ ๋ƒฅ ์นœ๊ตฌํ•œํ…Œ ์šฐ์—ฐํžˆ ๋งํ•˜๋‹ค๊ฐ€ ์˜ค ์ด๊ฑฐ ๊ดœ์ฐฎ์€๋ฐ? ์‹ถ์–ด์„œ ๋ฐ”๋กœ ํ”Œ์  ๋“ค์–ด๊ฐ„ .. ๊ทธ๋Ÿฐ ์‚ฌ์—ฐ์ด ์žˆ๋‹ค. ์‚ฌ์‹ค ํ˜ผ์ž๋Š” ๊ฐœ๋ฐœํ•  ์ƒ๊ฐ ์—†์—ˆ๋˜๊ฑฐ์ž„ ใ…‹ใ…‹

 

๐Ÿ”ฅ ํ‡ด๊ทผ์„ ์•ž๋‘” ๊ฐœ๋ฐœ์ž๋“ค.... ๊ฐœ๋ฐœํ•˜๋‹ค ๋ฏธ์ณ...์นดํ†ก์„ ํ•˜๋Š”๋ฐ....?

ํ‡ด๊ทผ 1์‹œ๊ฐ„ ์ „ ์นดํ†กํ•˜๋‹ค ๊ธ‰ ์‚˜ ๋ฐ›์•„์„œ ํ”„๋กœ์ ํŠธ ๋ฐ”๋กœ ์‹œ์ž‘ํ•˜๊ธฐ๋กœ ๊ฒฐ์‹ฌ ใ„ฑใ„ฑ ๊ฐ™์ดํ•˜๋Š” ์นœ๊ตฌ๋Š” ๋‚˜์œผ 3ํ•™๋…„ ์ดˆ๋ฐ˜ ์ง๊ถ์ด์ž, ๋‚ด ๋‹ค๊พธ๋ฉ”์ดํŠธ์ด์ž, ๊ท€์—ฌ์šด ์Šคํ‹ฐ์ปค ์žˆ์œผ๋ฉด ํ•ญ์ƒ ์‚ฌ๋‹ค์ฃผ๋Š” ์‚ฌ๋žŒ,, A.K.A ์ˆ˜์—…์‹œ๊ฐ„์— ๊ฐ™์ด ๋งจ๋‚  ์Šคํ‹ฐ์ปค ์ •๋ฆฌํ•˜๊ณ  ๋‹ค๊พธํ•˜๋‹ค ๊ฑธ๋ฆฐ ์ „์ ์ด ๋งŽ์€ .. ๊ณ ๋Ÿฐ ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ์ž๋‹˜ ^_^

๊ทธ๋ ‡๊ฒŒ ๐Ÿ’ฉ๊ธฐํš ๋˜ฅ ์‹ธ๊ธฐ๋ผ๋Š” ๋…ธ์…˜ ํŽ˜์ด์ง€๊ฐ€ ํƒ„์ƒํ–ˆ๊ณ , ํ‡ด๊ทผ์‹œ๊ฐ„๊นŒ์ง€ ์—ด์‹ฌํžˆ 1์ฐจ ๋˜ฅ์„ ์ ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ์ง€๊ธˆ๋ณด๋ฉด ์ง„์งœ ๋ง๋„์•ˆ๋˜๋Š” ๋‚ด์šฉ์ด ๋งŽ์ง€๋งŒ ์ด๋•Œ ์‹ธ์ง€๋ฅธ ๊ธ€๋“ค๋กœ ๊ธฐํš ์„ฑ์‚ฌ ๋œ ๊ฒƒ์ด ๋งŽ์Œ ใ…Žใ…Ž ์—ญ์‹œ ์ผ๋‹จ ์‹ธ์ง€๋ฅด๊ณ  ๋ณด๋Š” ๋ฒ• !

 

์‚ฌ์‹ค ๋ง ๋‚˜์˜ค๊ณ  ๋…ธ์…˜ ํŒ ๊ฒƒ์€ 6์›” ์ฏ”์Œ... ์ด์—ˆ๊ณ  ์˜ค๋žœ๋งŒ์— ์–ผ๊ตด๋„ ๋ณผ ๊ฒธ ํ•จ ๋งŒ๋‚˜์„œ ๋ง์›๋™ ํˆฌ์–ด์™€ ์นดํŽ˜์— ๊ฐ€์„œ ๊ธฐํš ์ •๋ฆฌํ•˜๊ณ  ์ด๊ฒƒ์ €๊ฒƒ ์–˜๊ธฐ ํ–ˆ๋Š”๋ฐ ๋‘˜๋‹ค ๊นŒ๋จน๊ณ  ํ•œ 3๊ฐœ์›” ํ๋ฆ„ .. 

 

์ •์‹ ์ฐจ๋ฆฌ๊ณ  ๋ณด๋‹ˆ 9์›” ,, ๋ณธ๊ฒฉ์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ ๋๋‚ด์ž! ์‹ถ์–ด์„œ ์–ผ๋ฅธ ํ”ผ๊ทธ๋งˆ ํŒŒ๊ณ  ๊นƒํ—ˆ๋ธŒ ๋ ˆํฌ๋„ ํŒŒ๊ณ ..... RDS๋„ ์ƒ์„ฑํ–ˆ๋‹ค. 

-

์–ด์ฉŒ๋‹ค๋ณด๋‹ˆ ํ”„๋กœ์ ํŠธ ํ•  ๋•Œ ๊ฑฐ์˜ ๋ฐฑ์—”๋“œ๋ฅผ ๋งก๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๊ทผ๋ฐ ์‚ฌ์‹ค ๋‚ด๊ฐ€๋ด๋„ ๋‚œ ํ”„๋ก ํŠธ๋„ ์•„๋‹ˆ๊ณ  ๋ฐฑ์—”๋“œ๋„ ์•„๋‹ˆ๋ผ์„œ .. ์• ๋งคํ•œ๋ฐ ....... ํ”„๋ก ํŠธ๋ฅผ ํ•˜์ž๋‹ˆ ๋Œ€๋ถ€๋ถ„ ๋ฆฌ์•กํŠธ๋ผ.... (๋ฆฌ์•กํŠธ ํฌ๊ธฐํ•œ ์‚ฌ๋žŒ = ME) ์–ด์ฉ” ์ˆ˜ ์—†์ด (?) ๋ฐฑ์—”๋“œ๋ฅผ ๋งก๊ฒŒ ๋˜๋Š” ๊ฒƒ ๊ฐ™์Œ. ๊ทผ๋ฐ ๋™์•„๋ฆฌ๊ฒƒ๋„ ํ•˜๊ณ  ํšŒ์‚ฌ ์ผ๋„ ํ•˜๋ฉด์„œ ์š”์ฆ˜ ๋ฐฑ์—”๋“œ ์ชฝ์œผ๋กœ ๋จธ๋ฆฌ๋„ ์ž˜ ๊ตด๋Ÿฌ๊ฐ€๊ณ  AWS๋•Œ๋ฌธ์— ํ™”๋‚˜๋Š” ์ผ์ด ์ด๋งŒ์ €๋งŒ์ด ์•„๋‹ˆ๋ผ ๋งŽ์ด ์ฐพ์•„๋ณด๊ฒŒ ๋ผ์„œ ๋ฐฑ์—”๋“œ ์ชฝ ํ•˜๋Š” ๊ฒƒ๋„ ๋งŒ์กฑํ•˜๋ฉฐ ํ•˜๋Š” ์ค‘์ž„ ใ…Žใ…Ž 

 

๐Ÿƒ๐Ÿป ๋ณธ๊ฒฉ์ ์œผ๋กœ ์„œ๋ฒ„ ๊ตฌ์ถ•์„ ํ•ด๋ณด์ž ......

๋ฐฑ์—”๋“œ๊ฐ€ ํ•ด์•ผํ•˜๋Š” ์—ญํ• ์ด๋ผ๊ณ  ํ•˜๋ฉด ์ผ๋‹จ ๋””๋น„ ๊ด€๋ฆฌ์™€ ์„œ๋ฒ„, api ๊ด€๋ฆฌ ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. (๊ฐ ์ ์ธ ์ƒ๊ฐ์ž„ ใ…Žใ……ใ…Ž) ๋‹จ๊ณ„๋ณ„๋กœ ์„ธ๋ถ„ํ™”๋ฅผ ํ•˜์ž๋ฉด,

 

1. ๋””๋น„ ๊ตฌ์ถ•

2. ์„œ๋ฒ„ ๊ตฌ์ถ•

- api ๊ตฌ์ถ• (ํ”„๋ก ํŠธ์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก)

- api ๋งž๋Š” ํ•จ์ˆ˜ ๊ตฌํ˜„

 

๊ฐ„๋‹จํ•˜๊ฒŒ ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•œ๋Œœ!

 

ํ˜ผ์ž ๋ฐฑ์—”๋“œ๋ฅผ ๋งก๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ๊ฑธ ์“ธ์ง€๋Š” ๋ชจ๋‘ ๋‚ด ์ž์œ ๋‹ค ~~ (์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๊ฒฝ๊ธฐ๋„ ์˜ค์‚ฐ์“ฐ ํ•ด์•ผํ•  ์ผ ์‚ฐ๋”๋ฏธ โ›ฐ) ํšŒ์‚ฌ์—์„œ๋„ ๊ทธ๋ ‡๊ณ  ํ‰์†Œ์— ์“ฐ๋Š” ๊ธฐ์ˆ ์Šคํ‚ฌ์€ mysql + sequilize + graphql (typegraphql) + typescript์— ์ต์ˆ™ํ•ด์ ธ์žˆ๋‹ค. ํŠนํžˆ graphql .... ์ž‘๋…„ ํ˜„์žฅ์‹ค์Šต ๋•Œ ๋ถ€ํ„ฐ api๋ผ ํ•˜๋ฉด graphql๋ฐ–์— ์จ๋ณด์งˆ ์•Š์•„์„œ,,,,,, ๋ฌผ๋ก  graphql์ด ์ตœ๊ณ ๊ณ  ์•„์ง๊นŒ์ง€๋„ ๋ถˆํŽธํ•œ ์ ์„ ํ•œ๋ฒˆ๋„ ๋ชป๋Š๊ผˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜‘์—…์—์„œ ์œ ์ผํ•œ ๋‹จ์ ์ด๋ผ๋ฉด, rest์— ๋น„ํ•ด ํ”„๋ก ํŠธ ์ชฝ์—์„œ ์š”์ฒญ์„ ํ•˜๋ ค๋ฉด ์–ด๋Š์ •๋„ ๋ฌธ๋ฒ•์„ ์ตํ˜€์•ผํ•œ๋‹ค๋Š” ๊ฒƒ. 

 

์ด๊ฒƒ์ €๊ฒƒ ์ƒ๊ฐํ–ˆ์„ ๋•Œ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋Š” graphql์ด ์•„๋‹Œ rest๊ฐ€ ๋” ์ ํ•ฉํ•  ๊ฒƒ ๊ฐ™์•˜๋‹ค. ๊ฒฐ๋ก ์€ ์ฒจ์œผ๋กœ rest api๋ฅผ ์จ๋ณธ๋‹ค๋Š” ๊ฒƒ ,,, ใ…Žใ…Ž^^ ๋˜ํ•œ mysql์ด๋ž‘ ์‹œํ€„๋ผ์ด์ € ์กฐํ•ฉ์œผ๋กœ ์‚ฌ์šฉํ•  ๊ฒƒ ๊ฐ™๋‹ค.

-

์‹ค์ œ๋กœ ์šด์˜๋˜๋Š” ๋””๋น„ ์ข€ ๋ดค๋‹ค๊ณ  ์ด์ œ ๋””๋น„๋Š” ์–ด๋Š์ •๋„ ๊ฐ์ด ์žกํžŒ ๊ฒƒ ๊ฐ™๋‹ค .. ํ•™๊ต๋‹ค๋‹ ๋•Œ๋Š” ๊ทธ๋ ‡๊ฒŒ ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ€๋”๋‹ˆ๋งŒ ,, ๋ช‡๊ฐœ์›”๋งŒ์— ์‰ฝ๊ฒŒ ์ดํ•ดํ•จ (ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋ผ๋˜๊ฐ€,, ๊ด€๊ณ„ ์ด๋Ÿฐ๊ฒƒ๋“ค.......์—ญ์‹œ ์‹ค๋ฌด ๊ฒฝํ—˜์ด ์งฑ์ž„)

 

https://www.erdcloud.com/d/Rqoj52to47sRHg9Jn

 

exchange-diary

Draw ERD with your team members. All states are shared in real time. And it's FREE. Database modeling tool.

www.erdcloud.com

erd๊ตฌ์กฐ๋Š” ๋ช‡์‹œ๊ฐ„ ๋™์•ˆ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ๊ฒจ์šฐ ์งฌ .. ์ƒ๊ฐ๋ณด๋‹ค ๋””๋น„ ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•ด์ง€๊ณ  ์ƒ๊ฐํ•ด์•ผ๋  ๊ฒƒ์ด ๋งŽ์•„์„œ ๊ณ ๋ฏผ์„ ๋งŽ์ด ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ฒจ๋ถ€ํ•œ ๋งํฌ ์‚ฌ์ดํŠธ์—์„œ ์ฃผ๋กœ erd๋‹ค์ด์–ด๊ทธ๋žจ ๋งŒ๋“œ๋Š” ๋ฐ ๊ฐ•์ถ”์ž„ ใ…Žใ…Ž ์งฑํŽธํ•จ

 

์ง€๊ธˆ ์•„๋งˆ์กด ๊ณ„์ •์œผ๋กœ rds ๋‘๊ฐœ๋ž‘ ec2 ํ•˜๋‚˜ ๋Œ๋ฆฌ๊ณ  ์žˆ๋Š”๋ฐ ์ผœ๋†“์œผ๋ฉด ๋ˆ ๋‚˜๊ฐ€๋Š”์ง€๋„ ๋ชจ๋ฅด๊ณ  ํ•œ๋‹ฌ๋‚ด๋‚ด ์ผœ๋†“๊ณ  ์žˆ๋‹ค๊ฐ€ ์–ด์ œ 3๋งŒ์› ๋น ์ ธ๋‚˜๊ฐ ........ (์•„๋งˆ์กด ใ…‚ใ„ทใ…‚ใ„ท) ์‹๊ฒํ•˜๊ณ  ๋‹น์žฅ ๋‹ค ๊บผ๋†“์Œ

 

์•„ ์ด ์–˜๊ธฐ๋ฅผ ์ ์œผ๋ ค๋Š” ๊ฑด ์•„๋‹ˆ์—ˆ๋Š”๋ฐ .. ํ•˜ํŠผ RDS๋„ ์ƒ์„ฑํ–ˆ์Œ! 

์จ˜ .. ๊ทผ๋ฐ ์ค‘์ง€์‹œ์ผœ๋†“์Œ ใ…Žใ…Ž ๋‹น๊ทผ ์›Œํฌ๋ฐด์น˜์—์„œ ์ ‘์†๋„ ์ž˜ ๋จ ~~ ํ…Œ์ด๋ธ” ์ƒ์„ฑ์€ ๋‹ค ํ•ด๋†“์€์ƒํƒœ์ด๋‹น. ๋ชฝ๊ณ ๋ฅผ ์“ธ๊นŒ mysql์„ ์“ธ ๊นŒ ๊ณ ๋ฏผํ–ˆ์ง€๋งŒ ํ™•์‹คํžˆ ๊ด€๊ณ„์„ฑ ์ด๋Ÿฐ ๊ฑด mysql์ด ๋” ์ง๊ด€์ ์ด๋ผ (์‚ฌ์‹ค ๋ชฝ๊ณ  ๋‹ค ๊นŒ๋จน์Œ) mysql๋กœ ์„ ํƒํ•จ 

 

rds๋„ ์ž˜ ์ƒ์„ฑํ–ˆ๊ณ , ๊ทธ ๋‹ด์€ ์ด์ œ ์„œ๋ฒ„ ํŒŒ์ผ ๋งŒ๋“ค ์ฐจ๋ก€๋‹น. ๊ฐ„๋‹จํ•˜๊ฒŒ ์„œ๋ฒ„ ํด๋” ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์„ ์ ์–ด๋ด์•ผ๊ฒ ๋‹ค.

 

๐Ÿ”„ ๊ทธ๋ž˜์„œ ์„œ๋ฒ„๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜์ฃ ?

๋‚ด๊ฐ€ ๋ณดํ†ต ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•œ๋‹ค! 

 

1. ๋งˆ์Œ ๋จน์—ˆ์„ ๋•Œ ๋ฐ”๋กœ ๊นƒํ—ˆ๋ธŒ ๋ ˆํฌ๋ฅผ ํŒ๋‹ค.

2. ๋ ˆํฌ๋ฅผ ํด๋ก ํ•œ๋‹ค.

3.

npm init

npm install

4. first commit์„ ํ•œ๋‹ค.

5. ๋ฐฉ์น˜

6. ๋ฐฉ์น˜

7. .......

8. ์ƒˆ๋ฒฝ์— ์ƒ๊ฐ๋‚  ๋•Œ ์‚˜ํƒ€์„œ ๊ฐœ๋ฐœ์‹œ์ž‘

9. ์กธ๋ ค์„œ ๋‹ค์‹œ ์ž ๋“ค๊ธฐ

 

๋ฌดํ•œ๊ตด๋ ˆ๋‹ค. ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ ๋งˆ์Œ ๋จน์—ˆ์„ ๋•Œ๋Š” ๋ชจ๋“  ๋‹ค ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์€๋ฐ ๋ง‰์ƒ ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋งŒ์‚ฌ๊ท€์ฐฎ์Œ๋ณ‘ ๋„์ง„๋‹ค ... ํ•˜์ง€๋งŒ ์˜ค๋Š˜์€ ์ถ”์„์—ฐํœด ๋งˆ์ง€๋ง‰๋‚ ์ด๋ผ ์šฐ์šธํ–ˆ์œผ๋ฏ€๋กœ ์—ด์‹ฌํžˆ ์„œ๋ฒ„ ๊ตฌ์ถ•์„ ํ–ˆ๋‹ค. 

 

4๋ฒˆ๊นŒ์ง€ ํ•˜๊ณ  5๋ฒˆ์œผ๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์ „์— rest api ์˜ˆ์ œ ๋ช‡๊ฐ€์ง€ ๋„ฃ์–ด์„œ ๋Œ๋ ค๋ณด๊ณ  ํด๋”์ •๋ฆฌ๋ฅผ ํ•ด๋†จ๋‹ค. 

 

rest๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„œ๋ฒ„ ํŒŒ์ผ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์†Œ๊ฐœํ•œ๋‹ค.

// npm ์„ค์น˜

npm i -S body-parser cors

npm i -D @types/express @types/body-parser @types/cors

package.json์— start๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

  "scripts": {
    "start": "nodemon src/index.ts",
    "test": "hello world"
  },

ํด๋”๊ตฌ์กฐ๋Š” ์ด๋Ÿฐ ์‹์œผ๋กœ ๋˜์–ด์žˆ๋‹ค.

// index.ts

import express from 'express'
import cors from 'cors'
import bodyParser from 'body-parser'

const app = express()
const port = 4000


/**
 *  2020.10.04 ์ด์œ ์ง„
 *  REST ๋ฐฉ์‹์˜ AP์„œ๋ฒ„๋“ค์€ ์›น ํŽ˜์ด์ง€์˜ ๋ณธ๋ฌธ ๋‚ด์šฉ์„ ๋ถ„์„ํ•˜๋ ค๊ณ  ํ•  ๋•Œ bodyParser์™€ cors ํŒจํ‚ค์ง€๋ฅผ use๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.
 */
app
    .use(bodyParser.urlencoded({extended: true})) 
    .use(cors())
    .get('/', (req, res) => res.json({ message: 'hello world' }))
    .get('/hello/:skip/:limit', (req, res) => {
        console.log(req.params)
        res.json(req.params)
    })

    .listen(port, ()=> console.log(`http://localhost:${port} started ... `))
    

index.ts ํŒŒ์ผ์ด๋‹ค. ์ฃผ์„์— ๋‹ฌ์•„๋†“์€ ๊ฒƒ ์ฒ˜๋Ÿผ bodyParser์™€ cors ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค. 

 

๊ฒฐ๊ณผ ใ„ฑใ„ฑ

graphql๊ณผ ๋‹ค๋ฅด๋‹ค๊ณ  ๊ฒ๋‚ดํ•˜๋ฉด ์•ˆ๋๋‹ค. ์š”์ฒญํ•˜๋Š” ํ˜•์‹๋งŒ ๋‹ค๋ฅผ ๋ฟ ๊ฒฐ๋ก ์ ์œผ๋กœ ๋ฐ›์•„์˜ค๋Š” ๊ฒƒ์€ ๋™์ผํ–ˆ์Œ ใ…Žใ……ใ…Ž

 

ํ—ค๋งธ๋˜ ๋ถ€๋ถ„์ด ํ•˜๋‚˜ ์žˆ์—ˆ๋‹ค.

 

โ›  ์‚ฝ์งˆ ์—†๋Š” ๊ฐœ๋ฐœ์€ ์ •๋…• ์—†๋Š” ๊ฒƒ์ธ๊ฐ€??????????

express() ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ถ„๋ช… ์„œ๋ฒ„ ์ ‘์†์ด ๋๋‹ค๊ณ  ๋œจ๋Š”๋ฐ.... ์ด์ƒํ•˜๊ฒŒ ์ ‘์†์ด ์•ˆ๋œ๋‹ค ?_? ๋‚œ ๋‚ด ์ฝ”๋“œ๊ฐ€ ๋ฌธ์ œ์žˆ๋Š” ์ค„ ์•Œ์•˜๋‹ค. ์•„๋ฌด๋ฆฌ ๋ช‡๋ฒˆ์„ ๋ด๋„๋ด๋„ ๋ฌธ์ œ๋ ๋งŒํ•œ ๋ถ€๋ถ„์ด ์—†์—ˆ๋‹ค. ๋‹น์—ฐํ•˜์ง€. .. ์ฑ… ๋ณด๊ณ  ๋˜‘๊ฐ™์ด ๋”ฐ๋ผ์ณค์œผ๋‹ˆ๊น ... ์•Œ๊ณ ๋ณด๋‹ˆ ๋” ํ—ˆ๋ฌดํ•จ

 

http://localhost:4000/hello/1/2 ์ด๋Ÿฐ์‹์œผ๋กœ http๋กœ ์ ‘์†ํ–ˆ์–ด์•ผ๋˜๋Š”๋ฐ, https๋กœ ์ ‘์†ํ•ด๋†“๊ณ  ์•ˆ๋œ๋‹ค๊ณ  ํ–ˆ๋˜ ๊ฑฐ์ž„ ... ๊ทธ๋ž˜์„œ ์ด ์ฐธ์— ์ œ๋Œ€๋กœ ์ฐพ์•„๋ดค๋‹ค. ๋„๋Œ€์ฒด http๋ž‘ https์˜ ์ฐจ์ด๋Š” ๋ญ˜๊นŒ??????

 

http์— s ํ•˜๋‚˜ ๋” ๋ถ™์€ https์˜ s์˜๋ฏธ๋Š” Secure์ด๋‹ค. HTTP ํ”„๋กœํ† ์ฝœ์— ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค. SSL ์ธ์ฆ์„œ๋ผ๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค. SSL ์ธ์ฆ์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์ดํŠธ์— ์ œ๊ณตํ•˜๋Š” ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•จ. ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธ๋กœ ๋ฐ”๊พผ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋Œฑ. ๋‚˜์ค‘์— ๋ณธ๊ฒฉ์ ์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ํ•˜๋ ค๋ฉด https๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋ ค๋Š”์ง€๋„ ์•Œ์•„์•ผ๋  ๊ฒƒ ๊ฐ™๋‹ค. (์ผ๋‹จ์€ ๋ฏธ๋ฃจ๊ธฐ)

 

๐Ÿ‘๐Ÿป ๋งˆ๋ฌด๋ฆฌ๋ฅผ ํ•ด๋ณด์ž

์˜ค๋Š˜์€ ๋ณธ๊ฒฉ์ ์ธ ๊ฐœ๋ฐœ์„ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•๋‹จ๊ณ„๋ผ๊ณ  ๋ณด๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ž˜์„œ ๋ฒˆํ˜ธ๋„ 0์ด๋‹ค. (ใ…‹ใ…‹) rest์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์ด ๋งŽ์•˜๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ์ˆ˜์›”ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ฒ๋‚ผ ๊ฒƒ ์—†๋‹ค ! ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฑ… ๋’ท๋ฉด์— ๋ช‡์žฅ ๋‚˜์™€์žˆ๋Š” api๋ถ€๋ถ„์„ ์ฐธ๊ณ ํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์งฐ๋Š”๋ฐ ์ด๊ฒŒ ๋„์›€ ๋งŽ์ด ๋˜์—ˆ๋‹ค ใ…Žใ…Ž. ๋˜..... ์˜ค๋Š˜ ๊ฐœ๋ฐœ ํ•œ ์‹œ๊ฐ„๋ณด๋‹ค ๋ธ”๋กœ๊ทธ ์“ฐ๊ณ  ์žˆ๋Š” ์‹œ๊ฐ„์ด ๋” ๊ธด ๊ฒƒ ๊ฐ™๋‹ค. ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•์ด ๋๋‚ฌ์œผ๋‹ˆ ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ api๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ ํด๋”๊ตฌ์กฐ๋ผ๋˜์ง€, ๋„ค์ด๋ฐ ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ •ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๋ฒŒ์จ ์ถ”์„ ์—ฐํœด ๋ ์‹œ๋กธ๋ƒ ๊ทธ๋ƒฅ ์ฃผ๋ง์ฒ˜๋Ÿผ ํ›… ์ง€๋‚˜๊ฐ„ ๋Š๋‚Œ์ด๋‹ค. ๐Ÿ˜ข๋ˆˆ๋ฌผ ์ž‘๋ ฌ

 

๋‹ค์Œ๋‹จ๊ณ„ ๐Ÿ‘‰๐Ÿป

1. .env ์ƒ์„ฑ ๋ฐ ๋””๋น„ ์—ฐ๋™ (์‹œํ€„๋ผ์ด์ €)

2. controllers, models ๊ตฌํ˜„

 

์–ด์จ‹๊ฑด ๋—. #1๋กœ ๋‹ค์‹œ ๋Œ์•„์˜ค๊ฒŸ์‚ผ !