jQueryやNode.jsでpostによりデータを送受信する

2021-06-18

postを使ってサーバーにデータを送信したり、レスポンスを受け取る方法です。
jQueryとNode.jsによる方法を記載しました。

  1. jQueryでpost
  2. Node.jsでpost
  3. 参考

1. jQueryでpost

jQueryでブラウザから直接サーバーとやりとりする時によく使うので記載しておきました。

//サーバーに送信するパラメータ
let body_send={
    place: "tokushima",
    type: "temperature",
    value: 23.4
};
post_obj(body_send);//以下のファンクションでbody_sendをサーバーに送信します

function post_obj(body) {
    let pass = "./";//送信先のURL
    $.post(pass,JSON.stringify(body)).done(function( result ) {
        //送受信成功時
        //resultにサーバーからのレスポンスが入ってます
        //console.log("OK",result);
    }).fail(function(result) {
        //送受信失敗時
        //console.log("NG", result);
    });
}

2. Node.jsでpost

Node.jsでサーバーとデータのやりとりをする時に使います。
特にAWSのLambda関数に直接コピペできるようにしました。もちろんその他Node.jsでも使えます。
他のやり方ではレスポンスデータが途中で途切れたりしたのですが、これなら大丈夫でした。

var https = require('https');

exports.handler = async (event) => {
    
    //サーバーに送信するパラメータ
    let postData={
        place: "kochi",
        type: "humidity",
        value: 34.5
    };

    //resにサーバーからのレスポンスが格納されます
    let res=await https_post(postData);//postリクエスト
    
    return res;
};
function https_post(body){
    let head={
        host: 'example.com',//送信先post
        port: 443,//httpsなので443
        path: '/api/v1/',//"https://example.com/api/v1/"に送信する場合
        method: 'POST',//postを指定
        headers: {
            //必要なヘッダー情報を記載
            'Content-Type': 'application/json',
            'x-key': 'key',
        }
    };
    return new Promise((resolve, reject) => {
        let moji ="";
        let req = https.request(head, (res) => {
            res.on('data', (chunk) => {
                moji += chunk;
                //console.log("requesting...",chunk);
            });
            res.on('end', () => {
                console.log('No more data in response.');
                resolve(JSON.parse(moji));
            });
        });
        req.on('error', (e) => {
            console.log('problem with request: ' + e.message);
            reject(e.message);
        });
        req.write(JSON.stringify(body));
        req.end();        
    });
}

参考