Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Блог

  • записей
    12
  • комментария
    72
  • просмотров
    5 139

REST API OpenCart - подробности.


buslikdrev

1 462 просмотра

 Поделиться

Здесь описание работы стандартного API OpenCart. Благодаря этому описанию каждый поймёт возможности и варианты применения.

 

Чтобы связать любой сайт с OpenCart, нужно в админ панели OpenCart/Система/Пользователи/API/Нажать кнопку добавить, дать название создаваемому API, например, название сайта которому даёте доступ, сгенерировать ключ доступа, установить статус включено, а во вкладке IP адрес добавить ip сайта.

 

Далее сайт может подключиться к вашему сайту с помощью отправки сгенерированного ключа пост запросом и сохранения куков. Так как не у многих получается получить сессионную куку, то Daniel Kerr сделал напрямую вывод названия сессионной куки на страницу начиная с OpenCart 3

https://github.com/opencart/opencart/blob/3.0.0.0/upload/catalog/controller/api/login.php

$json['api_token'] = $session->getId();

 

Пример авторизации и использование index.php?route=api/cart для OpenCart 2.X-3.X

Скрытый текст
<?php
	/* НАСТРОЙКИ */
	// ссылка на авторизацию в API OpenCart
	$server = 'http://opencart.com/';
	$user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36";
	// отправляем ключ в запросе для авторизации
	$post = array();
	$post['username'] = '';
	$post['key'] = 'hhhhhhh';
	$post['api_token'] = ''; // для 3.0
	$post['password'] = $post['key'];
	// отправляем заголовок
	$header = array();
	$header[] = 'Content-Type: application/json; charset=UTF-8';
	header('Content-Type: application/json; charset=UTF-8', true);

	$api = array(
		'status'   => false,
		'products' => array(),
		'vouchers' => array(),
		'totals'   => array(),
		'log'      => array(),
		'errors'   => array(),
	);

	/* АВТОРИЗАЦИЯ */
	if (!is_file(__dir__ . '/cookie.txt')) {
		$ch = curl_init($server . 'index.php?route=api/login');
		curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
		if (!empty($post)) {
			curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
			curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
		}
		//curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		// максимальное время работы curl в секундах
		//curl_setopt($ch, CURLOPT_TIMEOUT, 2);
		// максимальное время ожидания ответа от сервера
		//curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 500);
		// не прирывать сессию
		//curl_setopt($ch, CURLOPT_COOKIESESSION, false);
		// сохраняем куки
		curl_setopt($ch, CURLOPT_COOKIEJAR, __dir__ . '/cookie.txt');
		// загружаем куки
		curl_setopt($ch, CURLOPT_COOKIEFILE, __dir__ . '/cookie.txt');
		// следования любому заголовку "Location: "
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
		//curl_setopt($ch, CURLOPT_HEADER, false);
		// принудительное использование HTTPS порт
		//curl_setopt($ch, CURLOPT_PORT, 443);
		// если сертификат на вашем сервере старый и не способен работать для проверки сертификатов или хостер мудак
		//curl_setopt($ch, CURLOPT_CAINFO, 'H:/OSPanel/domains/mysite.by/cacert-2021-09-30.pem'); // https://curl.se/docs/caextract.html
		// принудительно запрашивать сервер общаться по протоколу TLS максимально новой версии
		//curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_MAX_TLSv1_1);
		// пробные сообщения поддержки активности TCP
		//curl_setopt($ch, CURLOPT_TCP_KEEPALIVE, true);
		// принудительное использование HTTP/2.0
		//curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
		// принудительная проверка хоста указанного в сертификате
		//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
		// принудительная проверка сертификата узла сети
		//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

		$result = json_decode(curl_exec($ch), true);

		curl_close($ch);

		//echo json_encode($result, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);

		if (!empty($result['success'])) {
			$api['status'] = true;
		} else {
			$api['status'] = false;
		}

		if (!empty($result['success'])) {
			$api['log'][] = $result['success'];
		}

		if (!empty($result['error'])) {
			$api['errors'][] = $result['error'];
		}
	}

	/* ИСПОЛЬЗОВАНИЕ API */
	if (is_file(__dir__ . '/cookie.txt')) {
		// добавляем товар в корзину
		$post = array();
		$post['product_id'] = 48;
		$ch = curl_init($server . 'index.php?route=api/cart/add');
		if (!empty($post)) {
			curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
			curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
		}
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_COOKIEJAR, __dir__ . '/cookie.txt');
		curl_setopt($ch, CURLOPT_COOKIEFILE, __dir__ . '/cookie.txt');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

		$result = json_decode(curl_exec($ch), true);

		curl_close($ch);

		//echo json_encode($result, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);

		if (!empty($result['success'])) {
			$api['log'][] = $result['success'];
		}

		if (!empty($result['error'])) {
			$api['errors'][] = $result['error'];
		}

		// получаем товар из корзины
		$post = array();
		$ch = curl_init($server . 'index.php?route=api/cart/products');
		if (!empty($post)) {
			curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
			curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
		}
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_COOKIEJAR, __dir__ . '/cookie.txt');
		curl_setopt($ch, CURLOPT_COOKIEFILE, __dir__ . '/cookie.txt');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

		$result = json_decode(curl_exec($ch), true);

		curl_close($ch);

		//echo json_encode($result, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);

		if (!empty($result['products'])) {
			$api['products'] = $result['products'];
		}

		if (!empty($result['vouchers'])) {
			$api['vouchers'] = $result['vouchers'];
		}

		if (!empty($result['totals'])) {
			$api['totals'] = $result['totals'];
		}

		if (!empty($result['products'])) {
			$api['log'][] = 'Вывели список товаров';
		}

		if (!empty($result['error'])) {
			$api['errors'][] = $result['error'];
		}

		// удаляем товар из корзины
		if ($api['products'] && $api['products'][0]['quantity'] > 20) {
			$post = array();
			$post['key'] = $api['products'][0]['cart_id'];
			$ch = curl_init($server . 'index.php?route=api/cart/remove');
			if (!empty($post)) {
				curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
				curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
			}
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
			curl_setopt($ch, CURLOPT_COOKIEJAR, __dir__ . '/cookie.txt');
			curl_setopt($ch, CURLOPT_COOKIEFILE, __dir__ . '/cookie.txt');
			curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

			$result = json_decode(curl_exec($ch), true);

			curl_close($ch);

			//echo json_encode($result, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);

			if (!empty($result['success'])) {
				$api['log'][] = $api['products'][0]['product_id'] . ' ' . $result['success'];
			}

			if (!empty($result['error'])) {
				$api['errors'][] = $result['error'];
			}

			// удаляем куки так как достигли своих целей
			if (is_file(__dir__ . '/cookie.txt')) {
				unlink(__dir__ . '/cookie.txt');
			}
		}
	}

	// авторизация не удалась, возможно кука устарела, пробуем снова
	if (!$api['log'] || !empty($api['errors'][0]['error']['key'])) {
		if (is_file(__dir__ . '/cookie.txt')) {
			unlink(__dir__ . '/cookie.txt');
		}
	}

	exit(json_encode($api, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));

 

 

 

  • +1 3
 Поделиться

4 комментария


Рекомендованные комментарии

OpenCart 2.X

Документация:

Скрытый текст

index.php?route=api/cart/add

Добавление товара в корзину

 

 Принимает POST данные:

// 1 товар
{
	'product_id':1,
	'quantity':1,
	'option':{
		100:[200,300]
	}
}

// product_id - id товара
// quantity - количество товара
// option - массив опций товара, где 100 - product_option_id может быть массивом данных product_option_value_id или строкой, 200 и 300 - product_option_value_id

// несколько товаров (начиная с OpenCart 2.0.1.0)
{
	'product':[{
		'product_id':1,
		'quantity':1,
		'option':{
			100:[200,300]
		}
	},{
		'product_id':2,
		'quantity':1,
		'option':{
			100:[200,300]
		}
	}]
}

// product - массив товаров, далее по принципу одного товара. Когда отправляете массив товаров, то корзина полностью очищается

 

  Присылает данные в формате JSON:

{
	'success':'Корзина обновлена',
	'error':{
		'warning':'Вы не имеете разрешения на доступ к API!',
		'option':{100:'Эта опция обязательна, чтобы добавить товар в корзину, когда добавляете 1 товар в корзину'},
		'store':'Нету такого товара, когда добавляете 1 товар в корзину',
	}
}


index.php?route=api/cart/edit

Обновление количества товара в корзине

 

Принимает POST данные:

{
	'key':'id товара в корзине - cart_id',
	'quantity':'Количество товара'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Корзина обновлена',
	'error':'Вы не имеете разрешения на доступ к API!'
}

 

 

index.php?route=api/cart/remove

Удаление товара из корзины

 

Принимает POST данные:

{
	'key':'id товара в корзине - cart_id'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Корзина обновлена',
	'error':'Вы не имеете разрешения на доступ к API!'
}

 

 

index.php?route=api/cart/products

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

 

Принимает POST данные:

// данных нет

 

 

Присылает данные в формате JSON:

{
	"products":[{
		"cart_id": "53",
		"product_id": "48",
		"name": "iPod Classic",
		"model": "product 20",
		"option": [{
			'product_option_id': "1",
			'product_option_value_id': "2",
			'name': "",
			'value': "",
			'type': ""
		}],
		"quantity": "1",
		"stock": true,
		"shipping": "1",
		"price": "$122.00",
		"total": "$122.00",
		"reward": 0
	}],
	"vouchers":[{
		'code': '',
		'description': '',
		'from_name': '',
		'from_email': '',
		'to_name': '',
		'to_email': '',
		'voucher_theme_id': 1,
		'message': '',
		'price': '',			
		'amount': ''
	}],
	"totals":[{
		"title": "Итого",
		"text": "$100.00"
	},{
		"title": "Eco Tax (-2.00)",
		"text": "$2.00"
	}],
	'error':{
		'warning':'Вы не имеете разрешения на доступ к API!',
		'stock':'Товары, отмеченные ***, недоступны в нужном количестве или отсутствуют на складе!',
		'minimum':'Минимальное количество для заказа товара %s составляет %s!'
	}
}

 

 

index.php?route=api/coupon

Применение купона к товару в корзине

 

Принимает POST данные:

{
	'coupon':'Код купона'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Ваш купон на скидку успешно применен!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Купон либо недействителен, либо истек срок его действия, либо достигнут предел его использования!',
}

 

 

index.php?route=api/currency

Смена валюты на время сессии

 

Принимает POST данные:

{
	'currency':'Код валюты ISO - USD, BYN'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Ваша валюта успешно изменена!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Код валюты является недействительным!',
}

 

 

index.php?route=api/customer

Авторизация под покупателем и установка данных в сессию

 

Принимает POST данные:

{
	'customer_id':'id покупателя',
	'customer_group_id':'id группы покупателей',
	'firstname':'Имя покупателя',
	'lastname':'Фамилия покупателя',
	'email':'Почта покупателя',
	'telephone':'Телефон покупателя',
	'custom_field':{
		11:'Кастомное поле custom_field_id = 11',
		12:'Кастомное поле custom_field_id = 12'
	}
}

 

 

Присылает данные в формате JSON:

{
	'success':'Ваши покупатели успешно изменены',
	'error':{
		'warning':'Вы не имеете разрешения на доступ к API!',
		'warning':'Такого клиента не существует!',
		'firstname':'Имя должно содержать от 1 до 32 символов!',
		'lastname':'Фамилия должна содержать от 1 до 32 символов!',
		'email':'E-Mail адрес введен неверно!',
		'telephone':'Номер телефона должен содержать от 3 до 32 символов!',
		'custom_field*':'Это кастомное поле обязательно!',
		'telephone':'Такого клиента не существует!',
	}
}

 

 

index.php?route=api/login

Авторизация в REST API OpenCart и получение сессионных куков

 

Принимает POST данные:

// OpenCart 2.0.0.0-2.0.3.1
{
	'username':'Название api',
	'password':'Ключ api',
}

// OpenCart 2.1.0.0-2.3.0.2
{
	'key':'Ключ api',
}

// OpenCart 3.0.0.0-3.1.0.0
{
	'username':'Название api',
	'key':'Ключ api',
}

 

 

Присылает данные в формате JSON:

{
	'success':'Вы авторизованы',
	'cookie':'Имя сессионной куки - для восстановления сессии, имя отправляется в заголовке OpenCart 2.0.0.0-2.0.3.1 PHPSESSID=sfdsfdsfsgfdgdg',
	'token':'Токен - для восстановления сессии, токен добавляется к ссылке при запросах в OpenCart 2.1.0.0-2.3.0.2 создаётся сессия с названием api=sfdsfdsfsgfdgdg',
	'api_token':'Токен - для восстановления сессии, токен добавляется к ссылке при запросах в OpenCart 3.0.0.0-3.X создаётся или возобновляется обычная сессия с названием OCSESSID=sfdsfdsfsgfdgdg',
	'error':'Неправильный ключ доступа OpenCart 2.0.0.0-2.0.3.1',
	'error':{
		'ip':'Доступ с вашего IP запрещён OpenCart 2.1.0.0-3.X',
		'key':'Неправильный ключ доступа OpenCart 2.1.0.0-3.X',
	}
}

 

 

index.php?route=api/order/add

Добавление заказа

 

Допишу позже...

 

Принимает POST данные:

 

 

Присылает данные в формате JSON:

{
	'success':'Ваш заказ обновлен!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Укажите данные Покупателя!',
	'error':'Укажите платежный адрес!',
	'error':'Необходимо указать способ оплаты!',
	'error':'Не доступно без вариантов оплаты!',
	'error':'Укажите адрес доставки!',
	'error':'Необходимо указать способ доставки!',
	'error':'Не доступно без вариантов доставки!',
	'error':'Товары, отмеченные ***, недоступны в нужном количестве или отсутствуют на складе!',
	'error':'Минимальное количество для заказа товара %s составляет %s!',
	'error':'Запрошенный заказ не найден!'
}

 

 

index.php?route=api/order/edit

Редактирование заказа

 

Допишу позже...

 

Принимает POST данные:

 

 

Присылает данные в формате JSON:

{
	'success':'Ваш заказ обновлен!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Укажите данные Покупателя!',
	'error':'Укажите платежный адрес!',
	'error':'Необходимо указать способ оплаты!',
	'error':'Не доступно без вариантов оплаты!',
	'error':'Укажите адрес доставки!',
	'error':'Необходимо указать способ доставки!',
	'error':'Не доступно без вариантов доставки!',
	'error':'Товары, отмеченные ***, недоступны в нужном количестве или отсутствуют на складе!',
	'error':'Минимальное количество для заказа товара %s составляет %s!',
	'error':'Запрошенный заказ не найден!'
}

 

 

index.php?route=api/order/delete

Удаление заказа

 

Принимает POST данные:

{
	'order_id':'id заказа'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Ваш заказ обновлен!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Запрошенный заказ не найден!'
}

 

 

index.php?route=api/order/info

Информация о заказе

 

Принимает POST данные:

{
	'order_id':'id заказа'
}

 

 

Присылает данные в формате JSON:

{
	'order':{массив из модели},
	'success':'Ваш заказ обновлен!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Запрошенный заказ не найден!'
}

 

 

index.php?route=api/order/history

Добавление истории по заказу

 

Принимает POST данные:

{
	'order_id':'id заказа',
	'order_status_id':'id статуса заказа',
	'notify':'Уведомить покупателя? true/false',
	'override':'хз',
	'comment':'Комментарий'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Ваш заказ обновлен!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Запрошенный заказ не найден!'
}

 

 

index.php?route=api/payment/address

Установка адреса оплаты в сессию

 

Допишу позже...

 

Принимает POST данные:

 

 

Присылает данные в формате JSON:

 

 

 

index.php?route=api/payment/methods

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

 

Принимает POST данные:

// данных нет

 

 

Присылает данные в формате JSON:

{
	'payment_methods':{массив данных оплат},
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Укажите адрес оплаты!',
	'error':'Нет доступных вариантов оплаты!'
}

 

 

index.php?route=api/payment/method

Установка способа оплаты в сессию

 

Принимает POST данные:

{
	'payment_method':'вариант оплаты - строка'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Метод оплаты был успешно установлен!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Укажите адрес оплаты!',
	'error':'Необходимо указать способ оплаты!'
}

 

 

index.php?route=api/reward

Применение бонусных баллов для покупки того, что в корзине

 

Принимает POST данные:

{
	'reward':'Количество бонусных баллов - цифра'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Бонусные баллы успешно применены!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Укажите количество бонусных баллов, которые хотите использовать!',
	'error':'У Вас нет %s бонусных баллов!',
	'Максимальное количество бонусных баллов, которые могут быть использованы, составляет %s!'
}

 

 

index.php?route=api/reward/maximum

Получение общей цены в бонусных баллах по товару в корзине

 

Принимает POST данные:

// данных нет

 

 

Присылает данные в формате JSON:

{
	'maximum':'Количество бонусных баллов',
	'error':'Вы не имеете разрешения на доступ к API!'
}

 

 

index.php?route=api/reward/available

Получение количества бонусных баллов у пользователя

 

Принимает POST данные:

// данных нет

 

 

Присылает данные в формате JSON:

{
	'points':'Количество бонусных баллов',
	'error':'Вы не имеете разрешения на доступ к API!'
}

 

 

index.php?route=api/shipping/address

Установка адреса доставки в сессию

 

Допишу позже...

 

Принимает POST данные:

 

 

Присылает данные в формате JSON:

 

 

 

index.php?route=api/shipping/methods

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

 

Принимает POST данные:

// данных нет

 

 

Присылает данные в формате JSON:

{
	'shipping_methods':{массив данных доставок},
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Укажите адрес доставки!',
	'error':'Нет доступных методов доставки!'
}

 

 

index.php?route=api/shipping/method

Установка способа доставки в сессию

 

Принимает POST данные:

{
	'shipping_method':'вариант доставки - строка'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Метод доставки был успешно установлен!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Укажите адрес доставки!',
	'error':'Необходимо указать способ доставки!'
}

 

 

index.php?route=api/voucher

Установка подарочного сертификата в сессию

 

Принимает POST данные:

{
	'voucher':'Код подарочного сертификата'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Ваш подарочный сертификат успешно применен!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Подарочный сертификат недействителен или уже был использован!'
}

 

 

index.php?route=api/voucher/add

Создание подарочного сертификата

 

Принимает POST данные:

{
	'voucher':'Код подарочного сертификата',
	'from_name':'Имя отправителя',
	'from_email':'Почта отправителя',
	'to_name':'Имя получателя',
	'to_email':'Почта получателя',
	'voucher_theme_id':'id - темы',
	'message':'Сообщение для получателя',
	'amount':'сумма - цифра'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Корзина покупок обновлена!',
	'error':{
		'warning':'Вы не имеете разрешения на доступ к API!',
		'from_name':'Ваше имя должно содержать от 1 до 64 символов!',
		'from_email':'E-Mail адрес введен неверно!',
		'to_name':'Ваше имя должно содержать от 1 до 64 символов!',
		'to_email':'E-Mail адрес введен неверно!',
		'amount':'Сумма должна быть от %s до %s!',
	}
}

 

 

 

 

 

 

Ссылка на комментарий

Вывод:

Стандартный REST API OpenCart слаб по функционалу. Но вы можете в любой момент создать недостающий контроллер, зная как авторизовываться.

Пример получения всех товаров:

Скрытый текст

 

index.php?route=api/mymodule/products

catalog/controller/api/mymodule.php

<?php
class ControllerApiMyModule extends Controller {
	public function products() {
		$this->load->language('api/cart');

		$json = array();

		if (!isset($this->session->data['api_id'])) {
			$json['error']['warning'] = $this->language->get('error_permission');
		} else {
			$this->load->model('catalog/product');

			$json['success']['total'] = $this->model_catalog_product->getTotalProducts();
			$json['success']['products'] = $this->model_catalog_product->getProducts();
		}

		if (isset($this->request->server['HTTP_ORIGIN'])) {
			$this->response->addHeader('Access-Control-Allow-Origin: ' . $this->request->server['HTTP_ORIGIN']);
			$this->response->addHeader('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
			$this->response->addHeader('Access-Control-Max-Age: 1000');
			$this->response->addHeader('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');
		}

		$this->response->addHeader('Content-Type: application/json');
		$this->response->setOutput(json_encode($json));
	}
}

 

 

Ссылка на комментарий
21.04.2022 в 18:33, buslikdrev сказал:

Вывод:

Стандартный REST API OpenCart слаб по функционалу. Но вы можете в любой момент создать недостающий контроллер, зная как авторизовываться.

Пример получения всех товаров:

Плохая практика для rest отдавать ошибки с кодом ответа 200 

Ссылка на комментарий

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.