์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Import
- JS #ํ๋ก์ ํธ
- slow and steady
- async
- eport
- ํผํ
- json
- database
- ์ฐธ๊ณ ๋ธ๋ก๊ทธ
- Project
- ๊ฒ์
- ๋๊ธฐ
- object
- mysql
- await
- ajax
- prj
- addEventListener
- webpack
- ๋น๋๊ธฐ
- db
- callback
- setTimeout()
- Porject
- js
- https://m.blog.naver.com/tt2t2am1118/221010125300
- execCommand
- promise
- https://youtube.com/playlist?list=PLuHgQVnccGMA5836CvWfieEQy0T0ov6Jh&si=FTaYv8m21EhO-A2K
- sql
- Today
- Total
C-log
JS์ ํต์ฌ! Node.js : API ๋ณธ๋ฌธ
YouTube Link |
|
ํ์๊ฐ๋ง์ Node.js ๋ฐฑ์๋ ๊ธฐ์ด ๋๋ด๊ธฐ (ft. API ๊ตฌ์ถ) | |
https://youtu.be/Tt_tKhhhJqY | |
API๋? ๊ฐ๋ ๋ฐ ์ ์ฉํ API๋ค ์๊ฐ, ๋ ์จ API ์๋ฐ์คํฌ๋ฆฝํธ ์ค์ ํ์ฉ ๋ฐฉ๋ฒ | |
https://youtu.be/pLBJgvC_ZUA |
API์ ์คํด
npm์ ํ๋์ ํจํค์ง๋ฅผ ์ ๊ณตํด์ฃผ๋ ์ฌ์ดํธ์ด๋ค. ๋ฌผ๋ก npm ํจํค์ง๋ค ์ค ์ด๋ค ํจํค์ง๋ API๋ฅผ ์ ๊ณตํด์ค๋ค. Document(/Documentation/Doc)๋ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ๋ฒ,๊ธฐ๋ฅ,๋์ ๋ฑ์ ์ค๋ช ํ๋ ์ค๋ช ์(๋ฌธ์)๋ค. ๊ทธ๋ฆฌ๊ณ API๋ ํ๋ก๊ทธ๋จ ๊ฐ์ ์ํธ์์ฉ์ ์ํ ๊ท์น, ๊ท์ฝ, ํจ์, ํ๋กํ ์ฝ ๋ฑ์ ์งํฉ์ด๋ค. ์ด์ฐฝ๊ธฐ์ ๋๋ API์ Doc๊ฐ ๊ฐ์ ๊ฐ๋ ์ผ๋ก ํ์ณ ์๊ฐํ๋ค. ๋ฟ๋ง ์๋๋ผ ๊ทธ๋ ๊ฒ๋ง ์์๋๋ ์์ธ ์ ๋ชป๋ ์ ๋ณด๋ฅผ ์ ํ ์ ๋ ์๋ค. ํ์ง๋ง ๋ด๊ฐ ๊ถ๊ทน์ ์ผ๋ก API์ Doc๋ฅผ ํ๊ฐ๋ คํ๋ ์ด์ ๋ JAVA์ API, Doc์ Unity์ API, Doc๋ค์ ๋ณด๋ฉด์ ์คํด๋ค์ด ์์ ๋์๋ค. ์ด ์คํด์ ์ง์ค์ ๋ค์๊ณผ ๊ฐ๋ค. ๋ณดํต ํด๋น ์ธ์ด,ํ๋ก๊ทธ๋จ ์ฌ์ดํธ์์(๋๋ Doc๋ง ์กด์ฌํ๋ ์ฌ์ดํธ) API๋ฅผ Doc๋ฅผ ํจ๊ป ๋ฌถ์ด์ ์ ๊ณตํด์ฃผ๋ ๊ฒ์ด ๋ณดํต์ธ๋ฐ ์ด๊ฒ ๋๋ฌธ์ด๋ค. ๊ทธ๋์ API๋ฅผ ๊ธฐ๋ฅ์ ์งํฉ์ฒด๋ผ๊ธฐ๋ณด๋จ ์ค๋ช ์๋ก์จ ์๊ฐํ๊ณ ๊ทธ๋ ๊ฒ ๋ณด์์๋ ๊ฒ์ด๋ค. ๊ฐ๋ ์์ด ์ฝ๋๋ง ๋ค์ฌ๋ค ๋ณด๋ ๋ฐ์ํ ์คํด๋ค์ด๋ค. ๋ฌผ๋ก API๋ฅผ ๋จ์ Doc,๋ฌธ์ํํด์ ์ ๊ณต ํ ์ ์๋ค.
- JAVA์ API's Documentation
- Unity Documentation > Scripting API
(์ง๊ธ ๋ค์ ๋ณด๋ ์ ๋ํฐ Doc๊ฐ ๊ต์ฅํ ์ ๋์ด ์๋ค.)
- JS MDN
ํ์๊ฐ๋ง์ Node.js ๋ฐฑ์๋ ๊ธฐ์ด ๋๋ด๊ธฐ (ft. API ๊ตฌ์ถ)
express
post : get๊ณผ post์ ์ฐจ์ด
post๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์ ์ ์ถํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ์์ฒญ ๋ณธ๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ์ฌ ์ ์กํ๋ค. ๋ฐ๋ผ์ post์์ฒญ์ ์บ์๋์ง ์์ผ๋ฉฐ, ๋ธ๋ผ์ฐ์ ๊ธฐ๋ก์์ ๋ณผ ์ ์๋ค. ๋ํ post์์ฒญ์ get์์ฒญ๊ณผ ๋ฌ๋ฆฌ ๋ฐ์ดํฐ ํฌ๊ธฐ์ ์ ํ์ด ์๋ค.
get์ ์ฃผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ณ , post๋ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ฑฐ๋ ์
๋ฐ์ดํธํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ์๋ get์์ฒญ์ ์ฌ์ฉํ๊ณ , ์๋ก์ด ๊ฒ์๋ฌผ์ ๊ฒ์ํ๋ ๊ฒฝ์ฐ์๋ post์์ฒญ์ ์ฌ์ฉํ ์ ์๋ค.
์ด๋ฒ ๊ฐ์์์ get์ ์ค์ฌ์ผ๋ก ๋ค๋ฃจ์๊ธฐ์ post์ ์ค๋ฉฐ์ด ๋ง์ด ๋ฏธ์ฝํ๋ค. ์ด๋ Nodejs์ ์ฌํํธ ํฌ์คํ
์์ ํ์ธ ํ ์ ์๋ค.
get : response&require (Route/Routing)
get์ ๊ธฐ๋ณธ์ ํํ์ด๋ค. res๋ response๋ฅผ ๋ปํ๋ค. '์๋ต'์ด๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์๋ฏ์ด ์ฐ๋ฆฌ๊ฐ '/'(localhost:3000/)๋ผ๋ ๋ผ์ฐํ ์ ํตํด res.send(~)์ ๊ฐ์ ์๋ฒ๊ฐ ํด๋น ์ฃผ์ ์น ๋ธ๋ผ์ฐ์ ์ ์๋ต์ ํด์ค๋ค๊ณ ๋ณด๋ฉด ๋๋ค. node๋ฅผ ํตํด ์ถ๋ ฅํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์ด์ require(์์ฒญ)์ ํด๋ณด์ ์ฐ๋ฆฌ๊ฐ ์๋ฒ์๊ฒ ์์ฒญ์ ํ๋ ๊ฒ์ด๋ค. ์์ฒญ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
์ฐ๋ฆฌ๋ ํ์ฌ localhost:3000/sound/name ์ด๋ผ๋ ์ฃผ์(๊ฒฝ๋ก)๋ฅผ ๋ผ์ฐํ ํ๋ค. ๊ทธ๋ฆฌ๊ณ const{name}=req.params;๋ฅผ ๋ณด๋ฉด params๋ผ๋ ๊ฒ์ ์๋ฒ์๊ฒ require(์์ฒญ)ํ๊ณ ์๋ค. {name}์ ๋น๊ตฌ์กฐํ ํ ๋น ๋ฌธ๋ฒ์ด๋ค. ์ด๋ ์ข ์๋ค ๋ค์ ํ์ธํด๋ณด๊ฒ ๋ค. ์ด์ ํด๋น ์ฃผ์๋ก ๊ฐ์ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ํ์ธํด ๋ณด์
ํด๋น ์ฃผ์์ ์ ์ ์์ด ๋์๊ณ ์ฃผ์(๊ฒฝ๋ก)๋ฅผ ํตํด require(์์ฒญ)ํ 'dog'์ ํด๋น๋๋ ๊ฐ์ JSONํํ๋ก response(์๋ต)ํด์ฃผ์๋ค.
์์ ์ฝ๋๋ฅผ res.send๋ฅผ ํ์ฉํด์ ์ข ๋ ์ฝ๊ฒ ์์ฑ ํด๋ณธ๋ค๋ฉด ์๋์ ๊ฐ๋ค.
์ฐธ๊ณ ๋ก const { name } = req.params;์ ํํ๋ ์๋์ ๊ฐ์ด ๋ฐ๊ฟ ์ ์๋ค.
์ฐธ๊ณ : ๋น๊ตฌ์กฐํ ํ ๋น๊ณผ .json()
๋น๊ตฌ์กฐํ ํ ๋น(Destructuring Assignment)์ ๊ฐ์ฒด๋ ๋ฐฐ์ด์์ ํ์ํ ๊ฐ๋ง ์ถ์ถํ์ฌ ๋ณ์์ ํ ๋นํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ์ฒด์์ ํน์ ์์ฑ์ ๊ฐ๋ง ์ถ์ถํ์ฌ ๋ณ์์ ํ ๋นํ๊ฑฐ๋, ๋ฐฐ์ด์์ ํน์ ์์๋ฅผ ์ถ์ถํ์ฌ ๋ณ์์ ํ ๋นํ ์ ์๋ค. ์๋ ์์์ฝ๋๋ฅผ ๋ณด์
๊ฐ์ฒด์ ๊ฒฝ์ฐ ์๋์ ๊ฐ๋ค.
๋ฐฐ์ด์ ๊ฒฝ์ฐ ์๋์ ๊ฐ๋ค.
.json()์ Express.js์์ ์ ๊ณตํ๋ ๋ฉ์๋ ์ค ํ๋๋ก, HTTP ์๋ต์ผ๋ก JSON ํ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์ด ๋ฉ์๋๋ ์๋ต์ Content-Type ํค๋๋ฅผ ์๋์ผ๋ก ์ค์ ํ๋ฏ๋ก JSON ํ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ๊ฒ์ด ๊ฐ๋จํ๊ณ ๋น ๋ฅด๋ค. ์๋ฅผ ๋ค์ด, res.json({ 'sound': '๋ฉ๋ฉ' })์ JSON ํ์์ { 'sound': '๋ฉ๋ฉ' } ๊ฐ์ฒด๋ฅผ ์๋ต์ผ๋ก ๋ณด๋ธ๋ค. ์ด๋ Content-Type ํค๋๋ ์๋์ผ๋ก application/json์ผ๋ก ์ค์ ๋๋ค. ์ฝ๊ฒ ๋งํด .json()์ ๋ฐ์ดํฐ ํ์์ผ๋ก ๋ณํํด์ฃผ๋ ๊ฒ์ด๋ค.
๊น์ ๋ด์ฉ์ JOSN ํฌ์คํ
์ ํตํด ๋ค์ ์์๋ณด์
params์ query
params์ ์ฝ๋๋ ๋ค์ ์๋์ ๊ฐ๋ค.
params๋ ์ฝ๋ฅธ๋ค์ id์ ๊ฐ์ด ๋ค์ด๊ฐ ๊ฐ์ ์๋ฏธํ๋ค. ์ฃผ์(๊ฒฝ๋ก)๋ http://localhost:4000/user/mytest์ด๋ฉฐ q์์ฒด๋ก๋ง ์ถ๋ ฅํด๋ณด๋ฉด ์๋์ ๊ฐ์ด ์ถ๋ ฅ๋๋ค.
๋ณด์ ๋ฏ params๋ ํ๋์ ๊ฐ์ฒด์ ๊ตฌ์กฐ, ์์ฑ์ผ๋ก ์กด์ฌํ๋ค. ํ์ง๋ง res.send์ q.id๋ผ๊ณ params์ id๋ฅผ ์ง์ ์ง์ ํ๋ฉด ์๋์ ๊ฐ๋ค.
์ด์ query๋ฅผ ์ดํด๋ณด์ ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
์ฃผ์(๊ฒฝ๋ก)๋ฅผ http://localhost:4000/user/?q=mytest&name=test&type=my&id=mytt๋ก ์ ์ํด๋ณด๋ฉด ์ถ๋ ฅ๋๋ ๊ฐ์ ์๋์ ๊ฐ๋ค.
์ฃผ์(๊ฒฝ๋ก)๋ฅผ ๋ณด๋ฉด ?๋ค์์ ๋ถํฐ ์ง์ ๋ ๊ฐ๋ค์ด res.query๋ก ๊ฐ์ฒด๋ก ๊ตฌ์กฐํ ๋์ด ์๊ณ parmas์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด๋ฅผ ํน์ ๋ช ์นญ์ผ๋ก ์ง์ ํด์ ์ถ๋ ฅํด ๋ณผ ์ ์๋ค. ์ด๋ฅผ ๊ฐ์ฒด(Object)์ ์์ฑ(Property)์ด๋ผํ๋ค.
์์ฃผ ์ ๊น ์์ฑ์ ๊ธฐ๋ณธ์ ํํ๋ฅผ ๋ณด์๋ฉด ์๋์ ๊ฐ๋ค.
CORS
CORS(Cross-Origin Resource Sharing)๋, ์น ํ์ด์ง์์ ๋ก๋๋๋ ๋ฆฌ์์ค๊ฐ ๋ค๋ฅธ ์ถ์ฒ(๋๋ฉ์ธ, ํฌํธ, ํ๋กํ ์ฝ)์ ๋ฆฌ์์ค์ ์ํธ์์ฉํ๋ ๊ฒ์ ์ ํํ๋ ๋ณด์ ๊ธฐ๋ฅ์ด๋ค.
Ndoejs + HTML
Html ์ฝ๋๋ฅผ ๋ณด๋ฉด fetchํจ์๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค. ์ด๋ ์ฐจํ์ fetch๊ด๋ จ ํฌ์คํ ์์ ๋ค๋ฃฐ ์์ ์ด๋ค.
'๐JS > โกver.1' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JS์ ํต์ฌ! ๋ฐฐ์ด ๊ด๋ จ ํจ์ (0) | 2023.05.10 |
---|---|
JS์ ํต์ฌ! : JSON (0) | 2023.05.08 |
JS์ ํต์ฌ! ajax+Plus (0) | 2023.05.01 |
JS์ ํต์ฌ! : Ajax (0) | 2023.04.29 |
JS์ ํต์ฌ! Introducing ์ํ์ฝ๋ฉ! (0) | 2023.04.25 |