LoginSignup
6
8

More than 5 years have passed since last update.

node.jsを試した(EコマースAPI)

Last updated at Posted at 2014-03-04

昔、気になっていたnode.jsでマッシュアップサイトってやつを作ったんですが、色々あって放置してた。
最近PHPに書き直そうと思ってるんだけど、しゃくだから、当時のコード内容を晒そうと思う。

構成として
node.js + mongodb + express
という感じ

正直、保守性は意識した書き方がわからなくて、書き方戸惑った。

今回の対象としているapiは以下です。
http://webservice.rakuten.co.jp/ 楽天WEBサービス
http://developer.yahoo.co.jp/ yahoo デベロッパーネットワーク

まず、楽天関係の通信モジュールは以下のように作りました。

common.js

var https        = require('https');
var querystring  = require('querystring');
function common(path){
  this.host = 'app.rakuten.co.jp';
  this.path = path;
  // 共通リクエスト(登録IDとか)
  this.options = function(){
    return {applicationId: 'アプリケーションID'
    ,affiliateId:'アフィリエイトID'
    ,format: 'json'};
  };
}
common.prototype = {
  generateURL: function (addOptions) {
    var options = this.options();
    for(var key in addOptions){
      options[key] = addOptions[key];
    }
    var url = 'https://' +this.host + this.path + '?' +
    require('querystring').stringify(options);
    console.log(url);
    return url;
  },
  get: function (options, callback) {
    var req = https.get(this.generateURL(options), function(res){
        res.setEncoding('utf8');
        var data = '';
        res.on('data', function(str) {data += str;});
        res.on('end',function(){
            callback(JSON.parse(data));
        });
    });
  }
};
module.exports = common;

・・・的な
これを親にして、各用途のAPIを拡張していきやした。
例:商品検索

ichibaitemsearch.js

var rakuten = require('./common.js');
function api () {
// ここのパスをAPIごとに変える
  rakuten.apply(this, ['/services/api/IchibaItem/Search/20130424']);
}
api.prototype = Object.create(rakuten.prototype);
api.prototype.constructor = api;
api.prototype.execute = function(obj, callback){
  this.get(obj, callback);
}
module.exports = api;

それで下記のように検索条件を渡して使う


var api = require('./lichibaitemsearch');
new api().execute({category: '0'},function(res){console.log('%j',res;});

長らく放置してたこのサイトをやり直そうと思った記事がこれ
http://www.find-job.net/startup/api-2013
いい時代になりましたね。余裕みて、色々作って行きたいっす。

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8