티스토리 뷰

반응형

 

 

#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}`);
});

 

 

반응형
댓글
반응형