воскресенье, 29 мая 2016 г.

Создаем API Wrapper в Node js

Если вам нужно использовать API в NodeJS одно из сервисов и не хочется каждый раз писать один и тот же запрос только с разными параметрами много раз. В этом случае лучше написать отдельный пакет, как это сделать можно прочитать в этом посте.
Для примера мы возьмем EasyWay API. Это сервис для отслеживания актуальных данных о маршрутах  и маршрутках доступный в нескольких странах.

Писать наш пакет буду в c9.io. Но вы можете выбрать любой другой вариант в котором есть возможность создавать и выполнять NodeJS проекты.

Создадим package.json и заполним нужными данными.

{
  "name": "node_eway",
  "version": "0.0.1",
  "description": "Api Wraper for Eway.",
  "main": "index.js",
  "repository": "",
  "author": "Edik Goryach <gorachedik96@gmail.com>",
  "dependencies": {
    "urlencode": "latest",
    "request": "latest"
  }
}

Теперь подключим наши пакеты и создадим конструктор для нашего обьекта в index.js

var request = require('request');
var urlencode = require('urlencode');

const APIURL = 'https://api.eway.in.ua/?';

//создание объекта
var Eway = function (login, pass) {
this.login = login;
this.pass = pass;


Напишем первый метод для нашего объекта:

Eway.prototype.get = function (method, params, callback){
  request({
  method: 'GET',
  url: APIURL + 'login=' + this.login +'&password=' + this.pass + '&function=' + method +'&'  + params,
  headers: {
    'Content-Type': 'application/json',
  }
}, function (err, response, body) {
   if (err) {
    callback('err');
    return console.error('Error:', err);
  }

  callback(JSON.parse(body))
});
}

Создадим test.js и попробуем вызвать конструктор и  наш метод
//подключаем index.js
var Eway = require('./index.js');

var EwayLib = new Lafka('Your login', 'Your pass');

EwayLib.get('cities.GetRoutesList', 'city=lviv', function(data) {
   console.log(data);
 return data;
});

Вот таким способом можно организовать обертку для Api  с помощью callback.

Комментариев нет:

Отправить комментарий