npm ์ cors ์ express ๋ฅผ ์ค์นํด์, ๊ฐ๋จํ API๋ฅผ ๋ง๋ค์ด๋ดค์ต๋๋ค.
cors ๋ ํ๋ก ํธ์์ ์๋ฒ์์ ์ ๊ณตํ API๋ก ์์ฒญ์ ๋ณด๋ผ ๋, ๋ฐ์ํ๋ ์๋ฌ์ ๋ํด์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด๋ค.
Cross Origin Resource Sharing
์ด์ ๊ด๋ จ๋ ์์ธํ ์ค๋ช ์, ์๋ ๋งํฌ์ ์ฒจ๋ถ๋์ด ์์ผ๋ ํด๋น ๋ธ๋ก๊ทธ์ ์ ์ํด์ ์ฝ์ด๋ณด๋ฉด ํฐ ๋์์ด ๋ ๊ฒ์ด๋ค.
https://bohyeon-n.github.io/deploy/web/cors.html
express ๋ Node ์์์ http์ connect ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ ์น ํ๋ ์์ํฌ๋ก์, ์น ์ดํ๋ฆฌ์ผ์ด์ ํน์ API ์๋ฒ ๊ตฌ์ถ์ ๊ฐํธํ๊ฒ ํด์ค๋ค.
์์ ํ ์ฝ๋๋
npm init // ์ด๊ธฐ package.json ์ผ๋ก ํจํค์ง ๊ด๋ฆฌ ๋ฐ node modules์ ๋ํ ์ ๋ณด๋ฅผ ์ฝ๊ฒ ๋ณด๊ธฐ ์ํด ๋ง๋ฌ
npm i express // express ์ค์น
npm i cors // cors ์ค์น
ํฐ๋ฏธ๋์์ ์คํํ ๋๋ ํ์ด์ฌ๊ณผ ์ ์ฌํ๊ฒ,
node express.js // node ๋ค์ js ํ์ผ๋ช ์ ์ ์ด์ฃผ์
์ฒ์์ express๋ผ๋ ์ด๋ฆ์ผ๋ก js๋ก ๋ฐฑ๋จ์ API๋ฅผ ์ค์ ํด์ฃผ๊ณ ,
html์ open server๋ก ์คํ์ํค๋ฉด์ ํ๋ก ํธ์๋ ๋จ์์ ๋ธ๋ผ์ฐ์ ์คํ์, ์ฌ์ฉ์ input ๊ฐ์ ๋ฐ๋ฅธ ๊ฐ๋ค์ ์๋ต์ ๋ณด์ฌ์ฃผ๋ ค๊ณ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
express.js
const express = require('express')
var cors = require('cors')
const app = express()
const port = 5555
app.use(cors())
app.get('/', (req, res) => {
res.send("Hello World!")
})
app.get('/city/:name', (req, res) => {
const { name } = req.params
if(name == "korea") {
res.json({'city' : '๋ถ์ฐ๊ด์ญ์, ์ธ์ฒ๊ด์ญ์, ๋๊ตฌ๊ด์ญ์, ๋์ ๊ด์ญ์, ๊ด์ฃผ๊ด์ญ์, ์ธ์ฐ๊ด์ญ์'})
} else if(name == "usa") {
res.json({'city' : 'Louisiana, Maine, Maryland'})
} else {
res.json({'city':'์์์์'})
}
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
index.html
<!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>Document</title>
</head>
<body>
<h1 id="city"></h1>
<input id="name" type="text">
<button onclick="getCity()">API ์์ฒญ</button>
<script>
function getCity() {
const name = document.getElementById('name').value
fetch(`http://localhost:5555/city/${name}`)
.then((response) => response.json())
.then((data) => {
console.log(data)
document.getElementById('city').innerHTML = data.city
});
}
</script>
</body>
</html>
Internet Browser
input ๊ฐ์ ๋ค์์ ๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด, API ํธ์ถ์ธ fetch ๋ฅผ ํตํด์ ๋ค์๊ณผ ๊ฐ์ data ๊ฐ์ด DOM์ ๋ฐฐ์น๋๊ฒ ํ์๋ค.
๋.
'๐๏ธ์ํํธ์จ์ด > ๐JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋น๋๊ธฐ API ์ฒ๋ฆฌ (0) | 2023.01.21 |
---|---|
[webpack-dev-server] ์ฝ๋ ๋ณ๊ฒฝ์ฌํญ ๋ฐ๋ก ๋ฐ์(js) (0) | 2023.01.11 |
์๋ฐ์คํฌ๋ฆฝํธ์์ ํ์ดํ๋ฅผ ์ฌ์ฉํ๋ ์ด์ (0) | 2022.11.29 |
[์๋ฐ์คํฌ๋ฆฝํธ] Math ํจ์ ์ด์ฉํ์ฌ ๋ก๋ ๋ฒํธ ์์ฑํ๊ธฐ (0) | 2022.11.08 |
[Vuetify] ๋๊ธฐ,๋น๋๊ธฐ, (0) | 2022.10.04 |