Skip to content

๐Ÿ—„๏ธ API code examples for JavaScript Everywhere by Adam D. Scott, published by O'Reilly Media

License

Notifications You must be signed in to change notification settings

JPWon-1/javascript_everywhere_API_JP

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

68 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Javascript everywhere API Project Diary

  • 2021-05-05 : ๊ฐœ๋ฐœ ๋„๊ตฌ ์„ธํŒ… ๋ฐ clone project. express ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•œ hello world๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ณผ์ •๊นŒ์ง€ ํ•ด๋ณด์•˜๋‹ค. nodemon์„ ์„ค์น˜ํ•˜์—ฌ ์ฝ”๋“œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์žˆ์„ ๊ฒฝ์šฐ ์„œ๋ฒ„๋ฅผ ์ž๋™์œผ๋กœ ์žฌ์‹œ์ž‘ ํ•ด์ฃผ๋Š”๊ฒƒ๋„ ๋ฐฐ์› ๋‹ค.

  • 2021-05-06 : apollo-server-express ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ graphQL API๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์•˜๋‹ค. note์— ์ธ์ž๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ๋ถ€๋ชจ์˜ note์—์„œ ์›ํ•˜๋Š” ๊ฐ’๋งŒ ๊ฐ€์ ธ์˜ค๋„๋ก ๋งŒ๋“ค์–ด ๋ณด์•˜๊ณ  mutation์„ ๋งŒ๋“ค์–ด์„œ note์—๋‹ค๊ฐ€ ์ƒˆ๋กœ์šด ๊ฐ’์„ pushํ•˜์˜€๊ณ  ์ด๋ฅผ gralhQL Playground ์—์„œ ํ™•์ธ ํ•œ ๊ฒฐ๊ณผ ์ •์ƒ์ ์œผ๋กœ ๋ฐ˜์˜ ๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

    query{
        notes{
            id
            content
            author
        }
    }
    query{
        note(id:"1"){
            id
            content
            author
        }
    }
   mutation {
        newNote (content: "this is a mutant note!"){
        content
        id
        author
  }
}๋ถ„๋ฆฌ
  • 2021-05-07 :5์žฅ์—์„œ๋Š” API์™€ ํ•จ๊ป˜ ๋ชฝ๊ณ ์™€ ๋ชฝ๊ตฌ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ๋‹ค. ๋˜ํ•œ node์—์„œ ๋ชจ๋“ˆ์„ exportํ•˜๊ณ  require๋กœ ๋ชจ๋“ˆ์„ ๋‹ค์‹œ ๋ฐ›์•„์„œ ์“ฐ๋Š” ๋ฐฉ๋ฒ•๋“ค ๋˜ํ•œ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๋ชจ๋“ˆ์„ ์ƒ์„ฑํ•˜๊ณ  ์ž„ํฌํŠธํ•˜๊ณ  ๋ฆฌ์ฝฐ์ด์–ด๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ณผ์ •์ด ๋‚ฏ์„ค๊ฒŒ ๋Š๊ปด์กŒ๋‹ค. ๋˜ํ•œ ๋ชฝ๊ณ DB๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋‹ˆ ์„ค์น˜ ๊ณผ์ •์—์„œ๋ถ€ํ„ฐ cmd๋กœ ์‹คํ–‰ํ•˜๊ธฐ๊นŒ์ง€๋„ ๊ฝค๋‚˜ ์–ด๋ ค์›€์„ ๊ฒช์—‡๋‹ค.

  • 2021-05-10 : src/index.js ํŒŒ์ผ์— ์ต์Šคํ”„๋ ˆ์Šค/์•„ํด๋กœ์„œ๋ฒ„ ์ฝ”๋“œ์™€ API์Šคํ‚ค๋งˆ, ๋ฆฌ์กธ๋ฒ„๊ฐ€ ๋ชจ๋‘ ์žˆ์—ˆ๋Š”๋ฐ ์ฝ”๋“œ๋ฒ ์ด์Šค๊ฐ€ ์ปค์ง€๋ฉด ๋‹ค๋ฃจ๊ธฐ ํž˜๋“ค ๊ฒƒ. ๋”ฐ๋ผ์„œ ๊ทธ ์ „์— ์Šคํ‚ค๋งˆ, ๋ฆฌ์กธ๋ฒ„, ์„œ๋ฒ„ ๋ฅผ ์„ธ๊ฐœ๋กœ ๊ตฌ๋ถ„ ํ•˜๊ธฐ๋กœ ํ•จ.

  • 2021-05-15 : graphQL์˜ ๋ฆฌ์กธ๋ฒ„๋ฅผ ์ค‘์ฒฉ์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ์„ ์ž‘์„ฑ ํ•ด ๋ณด์•˜๋‹ค.

query{
    note(id:"ID"){
        id
        content
        author{
            username
            email
            id
        }
    }
} 

์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ฟผ๋ฆฌ๋ฅผ ์งœ๋ณด์•˜๋‹ค. ์ด ๊ณผ์ •๋“ค์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ์— ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ํŒจํ„ด์„ ์ตํ˜”๋‹ค

  1. ๋จผ์ € ๊ทธ๋ž˜ํ”„QL ์Šคํ‚ค๋งˆ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค
  2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋ธ์„ ์ž‘์„ฑํ•œ๋‹ค
  3. ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ๋ฆฌ์กธ๋ฒ„ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.
  • 2021-05-22 : mongoDB ๋ฅผ ๋งŒ๋“ค๊ณ  heroku๋ฅผ ์„ค์ • ํ•˜์˜€๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ˜ธ์ŠคํŒ… = ๋ชฝ๊ณ  ๋””๋น„ ์ฝ”๋“œ ๋ฐฐํฌ = heroku
  1. ํด๋Ÿฌ์Šคํ„ฐ ์ƒ์„ฑ
  2. IP์ฃผ์†Œ ํ—ˆ์šฉ => 0.0.0.0/0 ์œผ๋กœ ํ•˜์—ฌ ๋ชจ๋“  IP ์ฃผ์†Œ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜์˜€์Œ
  3. ์•„์ด๋””/๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ • ์ด ์„ค์ •์ด ๋๋‚˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•ด ํ˜ธ์ŠคํŒ…๋œ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค.

์ด ์ฑ…์˜ ํ•™์Šต ๋ชฉ์ ์— ๋งž๊ฒŒ ํด๋ผ์šฐ๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”Œ๋žซํผ์ธ ํžˆ๋กœ์ฟ ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ํžˆ๋กœ์ฟ  ๊ณ„์ • ์ƒ์„ฑ์„ ํ•˜๊ณ  ํžˆ๋กœ์ฟ  ์ปค๋งจ๋“œ ๋ผ์ธ๋„๊ตฌ๋„ ์ธ์Šคํ†จ ํ•˜์˜€๋‹ค. (https://oreil.ly/Vf2Q_)

  1. ํ”„๋กœ์ ํŠธ ์„ค์ • ํžˆ๋กœ์ฟ  ์›น์‚ฌ์ดํŠธ ๋‚ด์—์„œ new -> create new app ์„ ํ•œ๋‹ค app ์ด๋ฆ„๊ณผ region์„ ์„ค์ •ํ•œ๋‹ค . ๋‚˜๋Š” jseveverywherejp / United States ๋กœ ํ•˜์˜€๋‹ค. ๊ทธ ๋‹ค์Œ settings ์— ๋“ค์–ด๊ฐ€ Reveal Config Vars ( ์„ค์ • ๋ณ€์ˆ˜ ํ‘œ์‹œ) ์— ๋“ค์–ด๊ฐ€ .env ์—์„œ ํ•œ๊ฑฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์•„๋ž˜ ์„ค์ • ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค NODE_ENV : production JWT_SECRET : PASSPHARSE DB_HOST : ์•„๊นŒ ๋งŒ๋“  ๋””๋น„ ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ
  2. ๋ฐฐํฌ ํ„ฐ๋ฏธ๋„์—์„œ
heroku git:remote -a jseverywherejp
git add .
git commit -am "ready!"
git push heroku master

๋ฅผ ์ž…๋ ฅํ•ด์ค€๋‹ค 3) ํ…Œ์ŠคํŠธ ๊ทธ๋ž˜ํ”„QL API ์š”์ฒญ์„ ๋‚ ๋ ค ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณผ๊ฒƒ์ด๋‹ค. ํ„ฐ๋ฏธ๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ curl์„ ์‚ฌ์šฉํ•˜๋ฉด ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•ด๋ณด์ž

curl -X POST -H "Content-Type: application/json" --data '{ "query": "{ notes { id } }" }' https://jseverywherejp.herokuapp.com/api

์•„์ง ์ด ํ”„๋กœ๋•์…˜์— ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ํ…Œ์ŠคํŠธ์— ์„ฑ๊ณตํ•˜๋ฉด ๋นˆ ๋…ธํŠธ ๋ฐฐ์—ด์ด ํฌํ•จ๋œ ์‘๋‹ต์„ ๋ฐ›๋Š”๋‹ค.

{"data":{"notes":[]}}

About

๐Ÿ—„๏ธ API code examples for JavaScript Everywhere by Adam D. Scott, published by O'Reilly Media

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%