Интернет-магазин SaaS - API — различия между версиями
Материал из wiki.2fox.org
2fox (обсуждение | вклад) |
2fox (обсуждение | вклад) |
||
| Строка 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> | ||
Версия 15: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); } }