티스토리 뷰
반응형
#post 사용법
#dashboard에서 정보 가져오는 방법
#appid얻는 법등등 궁긍함 사항있으면 쪽지 남겨주세요.
기본구조
#풀소스
const express = require('express');
const axios = require('axios');
const crypto = require('crypto');
const app = express();
app.use(express.json());
const globals = {
Appid: '',
Accesstoken: '',
Keyid: '',
AppKey: ''
};
app.post('/send-aqara-request', (req, res) => {
// 시간과 논스 생성
const Time = Math.round(new Date().getTime());
const Nonce = Math.round(new Date().getTime());
// 사인 문자열 생성
let preSign = `Appid=${globals.Appid}&Keyid=${globals.Keyid}&Nonce=${Nonce}&Time=${Time}`;
if (globals.Accesstoken) {
preSign = `Accesstoken=${globals.Accesstoken}&` + preSign;
}
preSign += globals.AppKey;
// MD5 해시 생성
const signStr = preSign.toLowerCase();
const strmd5 = crypto.createHash('md5').update(signStr).digest('hex');
const requestBody = {
"intent": "query.device.info",
"data": {
"pageNum": 1,
"pageSize": 50
}
};
// 외부 API로 요청 보내기
axios({
method: 'post',
url: 'https://open-kr.aqara.com/v3.0/open/api',
headers: {
'Appid': globals.Appid,
'Accesstoken': globals.Accesstoken,
'Keyid': globals.Keyid,
'Time': Time.toString(),
'Nonce': Nonce.toString(),
'Sign': strmd5,
'Content-Type': 'application/json'
// 추가적으로 필요한 헤더가 있다면 여기에 추가
},
// 요청의 바디가 필요하다면 여기에 추가
data: requestBody
})
.then(response => {
// 성공적으로 요청을 보내고 결과를 클라이언트에게 전달
res.json(response.data);
})
.catch(error => {
// 요청 실패시 에러를 클라이언트에게 전달
res.status(500).json({ message: 'Internal Server Error', error: error.message });
});
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
반응형
댓글
반응형