Персональные инструменты

Интернет-магазин SaaS - API — различия между версиями

Материал из wiki.2fox.org

Перейти к: навигация, поиск
Строка 28: Строка 28:
 
<source lang="php">
 
<source lang="php">
 
   http://mysite.com/api.html?action=GetProducts&api_key={API_KEY}&args=num=15,category=3,category!=5,order=DESC,orderby=id
 
   http://mysite.com/api.html?action=GetProducts&api_key={API_KEY}&args=num=15,category=3,category!=5,order=DESC,orderby=id
 +
</source>
 +
 +
 +
== Простой PHP класс для работы с API ==
 +
<source lang="php">
 +
<?php
 +
 +
class SimpleData{
 +
       
 +
    const API_KEY = 'ACsmsPZ8mJJ2Gfgdfgdf9JGAPOfqwsH2';
 +
    const URL = 'mysite.com';
 +
    const CACHE_DIR = './cache';
 +
    const CACHE_TIME = 15;
 +
   
 +
    public function __construct(){
 +
        if(!is_dir(self::CACHE_DIR))
 +
        mkdir(self::CACHE_DIR, 0777);
 +
    }
 +
   
 +
    public static function GetProducts($args=''){
 +
        $link = 'action=GetProducts&args='.urlencode($args);       
 +
        return self::GetData($link);
 +
    }
 +
   
 +
    public static function GetCategories($args=''){
 +
        $link = 'action=GetCategories';       
 +
        return self::GetData($link);
 +
    }
 +
   
 +
    private static function GetData($link=''){   
 +
        $cacheFile = self::CACHE_DIR . DIRECTORY_SEPARATOR . md5($link);
 +
       
 +
        if (file_exists($cacheFile) && @filemtime($cacheFile) > strtotime('-'.intval(self::CACHE_TIME).' minutes')) { 
 +
            return json_decode(file_get_contents($cacheFile), 1);
 +
        }
 +
       
 +
        $data = self::curl_get_file($link);
 +
       
 +
        if(!is_numeric($data) && !empty($data)){
 +
          file_put_contents($cacheFile, $data);
 +
          return json_decode($data, 1);
 +
        }
 +
       
 +
        return array();
 +
    }
 +
   
 +
    private static function curl_get_file($link) {
 +
        $ch = curl_init();
 +
        curl_setopt($ch, CURLOPT_URL, 'http://'.self::URL.'/api.html?api_key='.self::API_KEY.'&'.$link);
 +
        curl_setopt($ch, CURLOPT_HEADER, false);
 +
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 +
        curl_setopt($ch, CURLOPT_TIMEOUT, 25);
 +
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 25);
 +
 +
        $otvet = curl_exec($ch);
 +
        $errno = curl_errno($ch);
 +
        curl_close($ch);
 +
 +
        return ($errno == 0 ? $otvet : $errno);
 +
    }       
 +
}
 
</source>
 
</source>

Версия 16:27, 28 февраля 2016

API — набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением или операционной системой для использования во внешних программных продуктах.

Запросы к API

Для того чтобы вызвать метод API, Вам необходимо осуществить GET запрос по протоколу HTTP на указанный URL:

   http://mysite.com/api.html?action={METHOD_NAME}&api_key={API_KEY}

Методы

Получение списка категорий

Для того чтобы вызвать метод API, Вам необходимо осуществить GET запрос по протоколу HTTP на указанный URL:

   http://mysite.com/api.html?action=GetCategories&api_key={API_KEY}

Данный метод вернет json объект. Вся информация о категориях продуктов помещена в переменную content


Получение списка товаров

Работа данного метода похожа на работу модуля товары Для того чтобы вызвать метод API, Вам необходимо осуществить GET запрос по протоколу HTTP на указанный URL:

   http://mysite.com/api.html?action=GetProducts&api_key={API_KEY}

Данный метод вернет json объект. Вся информация о категориях продуктов помещена в переменную content

В качестве дополнительных параметров может быть передана переменная args (предварительно кодирована, например в js это делается с помощью encodeURIComponent). Переменная передается по аналогии с модулем

   http://mysite.com/api.html?action=GetProducts&api_key={API_KEY}&args=num=15,category=3,category!=5,order=DESC,orderby=id


Простой PHP класс для работы с API

<?php
 
class SimpleData{
 
    const API_KEY = 'ACsmsPZ8mJJ2Gfgdfgdf9JGAPOfqwsH2';
    const URL = 'mysite.com';
    const CACHE_DIR = './cache';
    const CACHE_TIME = 15;
 
    public function __construct(){
        if(!is_dir(self::CACHE_DIR))
        mkdir(self::CACHE_DIR, 0777);
    }
 
    public static function GetProducts($args=''){
        $link = 'action=GetProducts&args='.urlencode($args);        
        return self::GetData($link);
    }
 
    public static function GetCategories($args=''){
        $link = 'action=GetCategories';        
        return self::GetData($link);
    }
 
    private static function GetData($link=''){     
        $cacheFile = self::CACHE_DIR . DIRECTORY_SEPARATOR . md5($link);
 
        if (file_exists($cacheFile) && @filemtime($cacheFile) > strtotime('-'.intval(self::CACHE_TIME).' minutes')) {   
            return json_decode(file_get_contents($cacheFile), 1);
        }
 
        $data = self::curl_get_file($link);
 
        if(!is_numeric($data) && !empty($data)){
           file_put_contents($cacheFile, $data);
           return json_decode($data, 1);
        }
 
        return array();
    }
 
    private static function curl_get_file($link) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, 'http://'.self::URL.'/api.html?api_key='.self::API_KEY.'&'.$link);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 25);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 25);
 
        $otvet = curl_exec($ch);
        $errno = curl_errno($ch);
        curl_close($ch);
 
        return ($errno == 0 ? $otvet : $errno);
    }        
}