Evgenius

"REST API" для 1С-Битрикс

REST API для 1С-Битрикс маркетплейс
Решение позволяет создать RESTFull API для работы с данными сайта.
1000.00

Примеры

Пример содеражания директории api:

  • .htaccess
  • index.php


Содержание index.php


/**
 * @var  $APPLICATION CMain
 * @var  $USER CUser
 */

define("STOP_STATISTICS", true);
define('NO_AGENT_CHECK', true);
define("STATISTIC_SKIP_ACTIVITY_CHECK", true);

use Wsm\RestApi;

# bitrix
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

#================================================================================
# an example of a class Wcm \ Rest Api
#================================================================================

if(\Bitrix\Main\Loader::includeSharewareModule('wsm.restapi'))
{
    $CREST_API = RestApi::getEntity();

    #set auth method
    //$CREST_API->setAuthByToken(true, 'token');
    //$CREST_API->setAuthByApiKey(true, 'api_key');

    // feature additional authorization checks before receiving the key
    // Use setError to cancel
    $CREST_API->OnBeforeGetToken(function(){
        //$result = new RestApi\Result();
        //$result->setError('cancel auth');
        //return $result;
        });

    // sample command for a user by ID
    $CREST_API->get('/users/{id}', function(\Wsm\RestApi\Action $action){

        $params = $action->getUrlParams();

        $result = new RestApi\ActionResult();

        if(!(int)$params['id'])
        {
            $result->setError('Not correct parameter id: '.$params['id'], "PARAM");
        }
        else
        {

            $rsUser = \Bitrix\Main\UserTable::getById($params['id']);

            if($arUser = $rsUser->fetch())
            {
                $result->setData(array(
                    'ID' => $arUser['ID'],
                    'NAME' => $arUser['NAME'],
                    'LOGIN' => $arUser['LOGIN'],
                    'EMAIL' => $arUser['EMAIL'],
                    'ACTIVE' => $arUser['ACTIVE'],
                    ));
            }
        }

        return $result;

    });

    // an example of a list of team members
    $CREST_API->get('/users/', function(RestApi\Action $action){

        $result = new RestApi\ActionResult();

        $rsUser = \Bitrix\Main\UserTable::getList(array(
            'filter' => array(
                'ACTIVE' => 'Y',
                )
            ));

        $arU = array();
        while($arUser = $rsUser->fetch())
        {
            $arU[] = array(
                'ID' => $arUser['ID'],
                'NAME' => $arUser['NAME'],
                'LOGIN' => $arUser['LOGIN'],
                );
        }

        $result->setData($arU);

        return $result;

        });

    //Example commands for creating a new user
    $CREST_API->post('/users/', function(RestApi\Action $action){

        $result = new RestApi\ActionResult();

        $data = $action->getData();

        $CUser = new \CUser();

        $ID = $CUser->Add(array(
            'LOGIN'     => $data['login'],
            'EMAIL'     => $data['email'],
            'PASSWORD'  => $data['password'],
            'PASSWORD_CONFIRM'  => $data['password'],
            "ACTIVE"            => "Y",
            "GROUP_ID"          => array(1),
            //"LID"              => "s1",
            ));

        if (intval($ID) > 0)
        {
            $result->setData(array(
                'ID' => $ID,
                ));
        }
        else
        {
            $result->setError($CUser->LAST_ERROR, "CREATE_ERROR");
        }

        return $result;
    });

    // launch handler
    $CREST_API->handle();
}
else
{
    echo 'module not installed';
}

Возможно использование название класса и функции при указании обработчика

    /**
 * @var  $APPLICATION CMain
 * @var  $USER CUser
 */

define("STOP_STATISTICS", true);
define('NO_AGENT_CHECK', true);
define("STATISTIC_SKIP_ACTIVITY_CHECK", true);

use Wsm\RestApi;

# bitrix
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

#================================================================================
# an example of a class Wcm \ Rest Api
#================================================================================

if(\Bitrix\Main\Loader::includeSharewareModule('wsm.restapi'))
{
    $API = RestApi::getEntity();

    // sample command for a user by ID
    $API->get('/users/{id}', 'API\Users@show');

    // an example of a list of team members
    $API->get('/users/', 'API\Users@index');

    //Example commands for creating a new user
    $API->post('/users/', 'API\Users@create');

    // launch handler
    $API->handle();
}
else
{
    echo 'module not installed';
}

Для пренаправления всех запросов на скрипт, добавим файл .htaccess в директорию скрипта-обработчика

Содержание .htaccess

	
		RewriteEngine On
		RewriteCond %{REQUEST_FILENAME} !-f
		RewriteRule ^((?s).*)$ index.php?_url=/$1 [QSA,L]
	

Ссылки

Bitrix marketplace:
https://marketplace.1c-bitrix.ru/solutions/wsm.restapi/

WiKi модуля:
https://bitbucket.org/zent-tech/wsm.restapi/wiki

Проблемы и пожелаяния оставляйте в трекер задач:
https://bitbucket.org/zent-tech/wsm.restapi/issues

Техническая поддержка

Техническая поддержка модулей для 1С-Битрикс
осуществляется при обращении на Email: support@zent.tech

Вы можете заказать разработку модуля для 1С-Битрикс под ваши требования

Все модули