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

C-log

JS์˜ ํ•ต์‹ฌ! Node.js : API ๋ณธ๋ฌธ

๐Ÿ“’JS/โšกver.1

JS์˜ ํ•ต์‹ฌ! Node.js : API

4:Bee 2023. 5. 1. 00:30
728x90

 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,๋ฌธ์„œํ™”ํ•ด์„œ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

JDK 20 Documentation - Home

The documentation for JDK 20 includes developer guides, API documentation, and release notes.

docs.oracle.com

- JAVA์˜ API's Documentation

 

Unity ์Šคํฌ๋ฆฝํŒ… API

 

docs.unity3d.com

- Unity Documentation > Scripting API

(์ง€๊ธˆ ๋‹ค์‹œ ๋ณด๋‹ˆ ์œ ๋‹ˆํ‹ฐ Doc๊ฐ€ ๊ต‰์žฅํžˆ ์ž˜ ๋˜์–ด ์žˆ๋‹ค.)

 

MDN Web Docs

The MDN Web Docs site provides information about Open Web technologies including HTML, CSS, and APIs for both Web sites and progressive web apps.

developer.mozilla.org

- JS MDN


ํ•œ์‹œ๊ฐ„๋งŒ์— Node.js ๋ฐฑ์—”๋“œ ๊ธฐ์ดˆ ๋๋‚ด๊ธฐ (ft. API ๊ตฌ์ถ•)

 

express

 

express

Fast, unopinionated, minimalist web framework. Latest version: 4.18.2, last published: 7 months ago. Start using express in your project by running `npm i express`. There are 71718 other projects in the npm registry using express.

www.npmjs.com

 


post : get๊ณผ post์˜ ์ฐจ์ด

post๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— ์ œ์ถœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ์š”์ฒญ ๋ณธ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ „์†กํ•œ๋‹ค. ๋”ฐ๋ผ์„œ post์š”์ฒญ์€ ์บ์‹œ๋˜์ง€ ์•Š์œผ๋ฉฐ, ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ก์—์„œ ๋ณผ ์ˆ˜ ์—†๋‹ค. ๋˜ํ•œ post์š”์ฒญ์€ get์š”์ฒญ๊ณผ ๋‹ฌ๋ฆฌ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์— ์ œํ•œ์ด ์—†๋‹ค.

get์€ ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ , post๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒฝ์šฐ์—๋Š” get์š”์ฒญ์„ ์‚ฌ์šฉํ•˜๊ณ , ์ƒˆ๋กœ์šด ๊ฒŒ์‹œ๋ฌผ์„ ๊ฒŒ์‹œํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” post์š”์ฒญ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด๋ฒˆ ๊ฐ•์˜์—์„  get์„ ์ค‘์‹ฌ์œผ๋กœ ๋‹ค๋ฃจ์—ˆ๊ธฐ์— post์˜ ์„ค๋ฉฐ์ด ๋งŽ์ด ๋ฏธ์•ฝํ•˜๋‹ค. ์ด๋Š” Nodejs์˜ ์‹ฌํ™”ํŽธ ํฌ์ŠคํŒ…์—์„œ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.


get : response&require (Route/Routing)

app.get('/', (req, res) => {
  res.send(`Hello!:Port:${port}!!`);
})
app.listen(port, () => {
  console.log(`Contact Port ${port}`);
})

get์˜ ๊ธฐ๋ณธ์  ํ˜•ํƒœ์ด๋‹ค. res๋Š” response๋ฅผ ๋œปํ•œ๋‹ค. '์‘๋‹ต'์ด๋ž€ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋“ฏ์ด ์šฐ๋ฆฌ๊ฐ€ '/'(localhost:3000/)๋ผ๋Š” ๋ผ์šฐํŒ…์„ ํ†ตํ•ด res.send(~)์˜ ๊ฐ’์„ ์„œ๋ฒ„๊ฐ€ ํ•ด๋‹น ์ฃผ์†Œ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์‘๋‹ต์„ ํ•ด์ค€๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. node๋ฅผ ํ†ตํ•ด ์ถœ๋ ฅํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

ํ˜„์žฌ ํ•ด๋‹น ํฌํŠธ ์„œ๋ฒ„์— ์ ‘์† ๋˜์—ˆ์Œ์„ ์„œ๋ฒ„๊ฐ€ listen ํ•ด์ฃผ๊ณ  ์žˆ๋‹ค.
ํ•ด๋‹น ํฌํŠธ์— ์„œ๋ฒ„๊ฐ€ response(์‘๋‹ต)์„ ํ•ด์ค€ 'Hello!:Port:3000!!์ด๋‹ค. ์ด์ œ require(์š”์ฒญ)์„ ํ•ด๋ณด์ž

์ด์ œ require(์š”์ฒญ)์„ ํ•ด๋ณด์ž ์šฐ๋ฆฌ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์š”์ฒญ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

app.get('/sound/:name', (req, res) => {
  const { name } = req.params;
  // const p = req.params;
  // p.name
  if (name == "dog") {
    res.json({ 'sound': '๋ฉ๋ฉ' })
  } else if (name == "cat") {
    res.json({ 'sound': '์•ผ์˜น' })
  } else if (name == "pig") {
    res.json({ 'sound': '๊ฟ€๊ฟ€' })
  } else {
    res.json({ 'sound': 'unknown' })
  }
})

์šฐ๋ฆฌ๋Š” ํ˜„์žฌ localhost:3000/sound/name ์ด๋ผ๋Š” ์ฃผ์†Œ(๊ฒฝ๋กœ)๋ฅผ ๋ผ์šฐํŒ… ํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  const{name}=req.params;๋ฅผ ๋ณด๋ฉด params๋ผ๋Š” ๊ฒƒ์„ ์„œ๋ฒ„์—๊ฒŒ require(์š”์ฒญ)ํ•˜๊ณ  ์žˆ๋‹ค. {name}์€ ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น ๋ฌธ๋ฒ•์ด๋‹ค. ์ด๋Š” ์ข€ ์žˆ๋‹ค ๋‹ค์‹œ ํ™•์ธํ•ด๋ณด๊ฒ ๋‹ค. ์ด์ œ ํ•ด๋‹น ์ฃผ์†Œ๋กœ ๊ฐ€์„œ ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ™•์ธํ•ด ๋ณด์ž

ํ•ด๋‹น ์ฃผ์†Œ์— ์ž˜ ์ ‘์†์ด ๋˜์—ˆ๊ณ  ์ฃผ์†Œ(๊ฒฝ๋กœ)๋ฅผ ํ†ตํ•ด require(์š”์ฒญ)ํ•œ 'dog'์˜ ํ•ด๋‹น๋˜๋Š” ๊ฐ’์„ JSONํ˜•ํƒœ๋กœ response(์‘๋‹ต)ํ•ด์ฃผ์—ˆ๋‹ค.


์œ„์— ์ฝ”๋“œ๋ฅผ res.send๋ฅผ ํ™œ์šฉํ•ด์„œ ์ข€ ๋” ์‰ฝ๊ฒŒ ์ž‘์„ฑ ํ•ด๋ณธ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

app.get('/sound/:name', (req, res) => {
  const { name } = req.params;
 
  if (name === "dog") {
    res.send("๋ฉ๋ฉ")
  } else if (name === "cat") {
    res.send("์•ผ์˜น")
  } else if (name === "pig") {
    res.send("๊ฟ€๊ฟ€")
  } else {
    res.send("retry")
  }
})

์ฐธ๊ณ ๋กœ const { name } = req.params;์˜ ํ˜•ํƒœ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

const p = req.params;
 const name = p;
 console.log(name);

์ฐธ๊ณ  : ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น๊ณผ .json()

๋น„๊ตฌ์กฐํ™” ํ• ๋‹น(Destructuring Assignment)์€ ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์—์„œ ํ•„์š”ํ•œ ๊ฐ’๋งŒ ์ถ”์ถœํ•˜์—ฌ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐ์ฒด์—์„œ ํŠน์ • ์†์„ฑ์˜ ๊ฐ’๋งŒ ์ถ”์ถœํ•˜์—ฌ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๊ฑฐ๋‚˜, ๋ฐฐ์—ด์—์„œ ํŠน์ • ์š”์†Œ๋ฅผ ์ถ”์ถœํ•˜์—ฌ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ์ฝ”๋“œ๋ฅผ ๋ณด์ž
๊ฐ์ฒด์˜ ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

const person = { name: 'John', age: 30 };
const { name, age } = person;
console.log(name); // ์ถœ๋ ฅ: 'John'
console.log(age); // ์ถœ๋ ฅ: 30

๋ฐฐ์—ด์˜ ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

const numbers = [1, 2, 3, 4, 5];
const [first, second, ...rest] = numbers;
console.log(first); // ์ถœ๋ ฅ: 1
console.log(second); // ์ถœ๋ ฅ: 2
console.log(rest); // ์ถœ๋ ฅ: [3, 4, 5

 
.json()์€ Express.js์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์†Œ๋“œ ์ค‘ ํ•˜๋‚˜๋กœ, HTTP ์‘๋‹ต์œผ๋กœ JSON ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์ด ๋ฉ”์†Œ๋“œ๋Š” ์‘๋‹ต์˜ Content-Type ํ—ค๋”๋ฅผ ์ž๋™์œผ๋กœ ์„ค์ •ํ•˜๋ฏ€๋กœ JSON ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ๊ฐ„๋‹จํ•˜๊ณ  ๋น ๋ฅด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, res.json({ 'sound': '๋ฉ๋ฉ' })์€ JSON ํ˜•์‹์˜ { 'sound': '๋ฉ๋ฉ' } ๊ฐ์ฒด๋ฅผ ์‘๋‹ต์œผ๋กœ ๋ณด๋‚ธ๋‹ค. ์ด๋•Œ Content-Type ํ—ค๋”๋Š” ์ž๋™์œผ๋กœ application/json์œผ๋กœ ์„ค์ •๋œ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด .json()์€ ๋ฐ์ดํ„ฐ ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.
๊นŠ์€ ๋‚ด์šฉ์€ JOSN ํฌ์ŠคํŒ…์„ ํ†ตํ•ด ๋‹ค์‹œ ์•Œ์•„๋ณด์ž


params์™€ query

params์˜ ์ฝ”๋“œ๋Š” ๋‹ค์Œ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

app.get('/user/:id', (req, res) => {
  const q = req.params;//params๋Š” ์ฝœ๋ก ๋’ค์— ':id'์™€ ๊ฐ™์ด ๋“ค์–ด๊ฐ„ ๊ฐ’
  console.log(q);
  res.send(`Sending id is ${q.id}`);//?์™œ ์•ˆ๋˜๋Š”๊ฑฐ์ง€?
  //q์ž์ฒด๋กœ๋Š” req.params๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ๊ฐ’๋“ค์„ ์ง€์นญํ•˜๊ณ  ์žˆ๊ธฐ๋•Œ๋ฌธ
  // res.json({'userid' : q.id});
})

params๋Š” ์ฝœ๋ฅธ๋’ค์— id์™€ ๊ฐ™์ด ๋“ค์–ด๊ฐ„ ๊ฐ’์„ ์˜๋ฏธํ•œ๋‹ค. ์ฃผ์†Œ(๊ฒฝ๋กœ)๋Š” http://localhost:4000/user/mytest์ด๋ฉฐ q์ž์ฒด๋กœ๋งŒ ์ถœ๋ ฅํ•ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ถœ๋ ฅ๋œ๋‹ค.

๋ณด์•˜ ๋“ฏ params๋Š” ํ•˜๋‚˜์˜ ๊ฐ์ฒด์˜ ๊ตฌ์กฐ, ์†์„ฑ์œผ๋กœ ์กด์žฌํ•œ๋‹ค. ํ•˜์ง€๋งŒ res.send์˜ q.id๋ผ๊ณ  params์˜ id๋ฅผ ์ง์ ‘ ์ง€์ •ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ํ™•์ธํ•œ ๋ชจ์Šต์ด๋‹ค.

์ด์ œ query๋ฅผ ์‚ดํŽด๋ณด์ž ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

app.get('/user/', (req, res) => {
  const q = req.query;//?๊ฐ€ ๋“ค์–ด๊ฐ€์•ผ ํ•˜๋Š” ๊ฐ’
  console.log(q);
  console.log(q.q)
  console.log(q.name)
  console.log(q.id)
  res.send(`Sending id is ${q.id}`);
})

์ฃผ์†Œ(๊ฒฝ๋กœ)๋ฅผ http://localhost:4000/user/?q=mytest&name=test&type=my&id=mytt๋กœ ์ ‘์†ํ•ด๋ณด๋ฉด ์ถœ๋ ฅ๋˜๋Š” ๊ฐ’์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

์ฃผ์†Œ(๊ฒฝ๋กœ)๋ฅผ ๋ณด๋ฉด ?๋’ค์—์„œ ๋ถ€ํ„ฐ ์ง€์ •๋œ ๊ฐ’๋“ค์ด res.query๋กœ ๊ฐ์ฒด๋กœ ๊ตฌ์กฐํ™” ๋˜์–ด ์žˆ๊ณ  parmas์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด๋ฅผ ํŠน์ • ๋ช…์นญ์œผ๋กœ ์ง€์ •ํ•ด์„œ ์ถœ๋ ฅํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ๊ฐ์ฒด(Object)์˜ ์†์„ฑ(Property)์ด๋ผํ•œ๋‹ค.


์•„์ฃผ ์ž ๊น ์†์„ฑ์˜ ๊ธฐ๋ณธ์  ํ˜•ํƒœ๋ฅผ ๋ณด์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

const person = {
  name: 'John',
  age: 30,
  greet: function() {
    console.log('Hello, my name is ' + this.name);
  }
};
//person.name; person.age; ...

CORS

CORS(Cross-Origin Resource Sharing)๋ž€, ์›น ํŽ˜์ด์ง€์—์„œ ๋กœ๋“œ๋˜๋Š” ๋ฆฌ์†Œ์Šค๊ฐ€ ๋‹ค๋ฅธ ์ถœ์ฒ˜(๋„๋ฉ”์ธ, ํฌํŠธ, ํ”„๋กœํ† ์ฝœ)์˜ ๋ฆฌ์†Œ์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ฒƒ์„ ์ œํ•œํ•˜๋Š” ๋ณด์•ˆ ๊ธฐ๋Šฅ์ด๋‹ค.

 

cors

Node.js CORS middleware. Latest version: 2.8.5, last published: 4 years ago. Start using cors in your project by running `npm i cors`. There are 12370 other projects in the npm registry using cors.

www.npmjs.com


Ndoejs + HTML

const express = require('express');
const cors = require('cors');
const app = express();
const port = 3000;

app.use(cors());

app.get('/', (req, res) => {
  res.send(`Hello!:Port:${port}!!`);
})

app.get('/sound/:name', (req, res) => {
  const { name } = req.params;
  // const p = req.params;
  // p.name
  if (name == "dog") {
    res.json({ 'sound': '๋ฉ๋ฉ' })
  } else if (name == "cat") {
    res.json({ 'sound': '์•ผ์˜น' })
  } else if (name == "pig") {
    res.json({ 'sound': '๊ฟ€๊ฟ€' })
  } else {
    res.json({ 'sound': 'unknown' })
  }
})

app.listen(port, () => {
  console.log(`Contact Port ${port}`);
})
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>test_CORS</title>
</head>

<body>
  <h1 id="sound"></h1>
  <input id="name" type="text">
  <button onclick="getSound()">API name</button>
  <script>
    function getSound() {
      const name = document.getElementById('name').value;
      fetch(`http://localhost:3000/sound/${name}`)
        .then((response) => response.json())
        .then((data) => {
          console.log(data.sound)
          document.getElementById('sound').innerHTML = data.sound;
        });
    }
  </script>
</body>

</html>

Html ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด fetchํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ์ด๋Š” ์ฐจํ›„์— fetch๊ด€๋ จ ํฌ์ŠคํŒ…์—์„œ ๋‹ค๋ฃฐ ์˜ˆ์ •์ด๋‹ค.

728x90
Comments