π κ°μ | λΌμ¦λ² 리 νμ΄λ₯Ό μ΄μ©ν λμμ 보 μΈμκΈ° κ΅¬μΆ λ° Web λμ κ΄λ¦¬ κ²μν κ΅¬μΆ |
---|---|
π μ§νκΈ°κ° | 2022/03/07 ~ μ§ν μ€ (λ―Έμμ±) |
π μ¬μ© κΈ°μ | Node.js, Sequelize, Vue.js, PostgreSQL, MQTT, Naver search API |
π€ΉββοΈ ν κ΅¬μ± | Back-End 1λͺ |
Front-End 1λͺ | |
IoT 2λͺ | |
π© κ΄λ ¨ νλ | UVC λμ§νΈ νΈμ λΆνΈμΊ ν |
π λ§ν¬ | λ³Έ λ¬Έμμ μλ³Έ λ§ν¬λ https://joyful-ji0.develofolio.com/ - Projectsμμ μ°ΎμΌμ€ μ μμ΅λλ€. λ μμΈν λ΄μ©μ νμΈν μ μμ΅λλ€. |
https://github.com/SoSSimple/Metacamp-Bookscanner
κ³νλ¬Έμ
[1μ°¨ ν νλ‘μ νΈ κ³ν λ¬Έμ](https://89034052.notion.site/1-220f7616636a4ecc8340606caa767694)
μ¬μ©λμ
μ 곡 μλΉμ€
κ²μν home νλ©΄
μμΈμ 보 νλ©΄
κ³νλ¬Έμ - νλ‘μΈμ€ ꡬ쑰λμ μλΉμ€ νλ‘μ°μ°¨νΈ μμ±
DB μ€κ³
Naver μ± μ 보 κ²μ API μ°κ²°νμ¬ λ°μ½λ μ λ³΄λ§ μ λ ₯ν΄λ μ λͺ©, μ μ λ±μ λ΄μ© μλ μ μ₯
backend/routes/regi.js
// λ±λ‘
router.post('/', async (req, res) => {
try {
const params = {
isbn: req.body.isbn,
price: req.body.price,
location: req.body.location,
review: req.body.review
}
// μ
λ ₯κ° null 체ν¬
if (!params.isbn) {
const err = new Error('Not allowed null (name)')
logger.error(err.toString())
res.status(500).json({ err: err.toString() })
}
// λ€μ΄λ² μμΈμ 보 μ‘°ν
const result_2 = await storageService.more_info(params.isbn)
logger.info(`(storage.more_info.result) ${result_2}`)
const params_list = { ...params, result_2 }
const total_params = {
isbn: params_list.isbn,
review: params_list.review,
price: params_list.price,
location: params_list.location,
title: params_list.result_2[0].title,
author: params_list.result_2[0].author,
publisher: params_list.result_2[0].publisher,
image: params_list.result_2[0].image,
link: params_list.result_2[0].link,
}
logger.info(`(storage.reg.params) ${JSON.stringify(total_params)}`)
// λΉμ¦λμ€ λ‘μ§ νΈμΆ
const result = await storageService.reg(total_params)
logger.info(`(storage.reg.result) ${JSON.stringify(result)}`)
// μ΅μ’
μλ΅
res.status(200).json(result)
} catch (err) {
res.status(500).json({ err: err.toString() })
}
})
backend/service/storageService.js
// NAVER book API search
async more_info(params) {
let result = null
try {
result = await axios.get('<https://openapi.naver.com/v1/search/book.json>',{
headers: {
'X-Naver-Client-Id' : 'qkgbpYoWMqnsIJh0Dcux',
'X-Naver-Client-Secret' : 'KyABGi7_GI',
},
params: {
query : params
}
})
.then(result => { return result.data.items })
.catch(err => { console.log(err) })
logger.debug(`(storageService.more_info) ${result}`)
} catch (err) {
logger.error(`(storageService.more_info) ${err.toString()}`)
return new Promise((resolve, reject) => {
reject(err)
})
}
return new Promise((resolve) => {
resolve(result)
})
},