PHPackages                             oleg-chulakov-studio/yii2-rest - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. oleg-chulakov-studio/yii2-rest

ActiveYii-component[API Development](/categories/api)

oleg-chulakov-studio/yii2-rest
==============================

REST component for yii2 templates

1.0.0(6y ago)02.1k↓100%1BSD-3-ClausePHPPHP &gt;=7.3

Since Sep 19Pushed 6y ago5 watchersCompare

[ Source](https://github.com/OlegChulakovStudio/yii2-rest)[ Packagist](https://packagist.org/packages/oleg-chulakov-studio/yii2-rest)[ RSS](/packages/oleg-chulakov-studio-yii2-rest/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (4)Versions (2)Used By (0)

Yii2 Rest
=========

[](#yii2-rest)

Базовый компонент для работы REST, применяемый в корпоративном шаблоне

В компонент вынесен котроллер для RESTfull API, cо стандартизированными фильтрами и поведениями.

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

Установка
---------

[](#установка)

Для подключения компонентов в свой код необходимо добавить в *composer.json* следующий код:

```
"require": {
    "oleg-chulakov-studio/yii2-rest": "~1.0.0"
}

```

Или выполнив команду:

```
composer require oleg-chulakov-studio/yii2-rest

```

Контроль доступа
----------------

[](#контроль-доступа)

По умолчанию в Yii2 используется два поведения, которые контролируют доступ к каждому контролеру. Настройка `VerbFilter` и `AccessControl` фильтров доступа занимает достаточно весомый массив правил. Поэтому данная настройка была упрощена путем создания базового массива доступа:

```
public function accessRules()
{
    return [
        'index'   => $this->createAccess('get', true),
        'view'    => $this->createAccess('get', true, '@'),
        'create'  => $this->createAccess('post', true, '@'),
        'update'  => $this->createAccess('put, patch', true, '@'),
        'delete'  => $this->createAccess('delete', true, '@'),
        'options' => $this->createAccess(),
    ];
}

```

Элементы метода доступа и правил доступа может быть записан в двух вариациях:

- `'post, get'` - строка с элементами разделенных запятой
- `['admin', '@']` - массив с элементами

Если требуется расширенная настройка поведения, отличающаяся от стандартного, можно переопределить метод генерации конфигурации фильтра:

- `AccessControl` - метод `protected function accessBehavior($rules)` получающий список правил доступа и возвращающий конфигурацию поведения.
- `VerbFilter` - меод `protected function verbsBehavior($actions)` получающий список экшенов с методами доступа к ним и возвращающий конфигурацию поведения.

RESTfull API
------------

[](#restfull-api)

Каждое API как правило сопровождается дополнительными проверками и поведениями, обеспечивающими доступ контроллеру для автоизованных пользователей или путем кросдоменного запроса (CORS). Базовый REST контроллер предоставляет настройку необходимых поведений для подобных ситуаций.

**Авторизация:**

Для авторизации используется по умолчанию настроено `HttpBearerAuth` поведение. Который добавляет за собой дополнительные две настройки в контроллер:

- `authenticatorExcept` - Массив исключаемых из авторизации действий
- `authenticatorOnly` - Массив требующих авторизацию действий

Если обе настройки пусты, то все действия контроллера будут закрыты авторизацией.

**ContentNegotiator:**

Для RESTfull API как правило используется формат общения в виде json строки и данное поведение позволяет автоматически проставить для обмена запросами преобразование в json формат и обратно. Так же подается настройке:

- `negotiatorExcept` - Массив исключаемых из форматирования действий
- `negotiatorOnly` - Массив требующих форматирование действий

Если обе настройки пусты, то все действия контроллера будут подвержены форматированию.

**CORS:**

Фильтр кросдоменного доступа настроен для каждого API контроллера и предоставляет максимальный уровень доступа ко всем действиям. На него так же можно повлиять:

- `corsMethods` - Массив разрешенных методов доступа (POST, GET)

Если настройка остается пустой, в нее будет передан массив из `VerbFilter` со всеми указанными методами к действиям.

**Переопределение и расширенная настройка поведений:**

Каждый фильтр имеет свой метод создания конфигурации поведения. Если метод возвращает пустой массив или null значение, поведение не будет подключено к контроллеру.

- Авторизация: `protected function authenticatorBehavior()`
- ContentNegotiator: `protected function contentNegotiatorBehavior()`
- CORS: `protected function corsBehavior()`

**Стандартизированный ответ:**

Для стандартизации ответа с сервера используется два базовых метода:

- Успешное завершение обработки: `return $this->successResult($code = HTTP::SUCCESS_OK, $message = null)`
- Ошибка в процессе обработки: `return $this->errorResult(Model $model, $error)`

Во всех остальных ситуациях может быть возвращен любой массив, что ожидает получить клиент API запроса.

В результате успешного завершения будет возвращен массив:

```
{
    "success" : true,
    "message" : $message
}

```

В результате сообщения об ошибке будет выброще исключение `BadRequestHttpException`с указанием первой ошибки валидации формы/модели или с сообщением об ошибке. Дополнительно для исключения передается `errorStatus` для дополнительно обработки клиентом ошибки валидации и ошибки сервера. По умолчанию переменная выставлена в значение `1`.

Поведения:
----------

[](#поведения)

- [Поведение "CORS"](docs/behavior-CORS.md)

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity18

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

2427d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/a7cb11be37853072fe7ab807b40211e2c135bc04bf5c7c79d9c523dc4022ed2d?d=identicon)[Oleg Chulakov Studio](/maintainers/Oleg%20Chulakov%20Studio)

---

Top Contributors

[![ikchulakov](https://avatars.githubusercontent.com/u/32455466?v=4)](https://github.com/ikchulakov "ikchulakov (1 commits)")

### Embed Badge

![Health badge](/badges/oleg-chulakov-studio-yii2-rest/health.svg)

```
[![Health](https://phpackages.com/badges/oleg-chulakov-studio-yii2-rest/health.svg)](https://phpackages.com/packages/oleg-chulakov-studio-yii2-rest)
```

###  Alternatives

[dotzero/yii2-amocrm

Расширение для Yii Framework 2 реализующее клиент для работы с API amoCRM

1639.7k](/packages/dotzero-yii2-amocrm)[conquer/services

Yii2 soap wsdl web services

1632.5k](/packages/conquer-services)[skeeks/yii2-google-api

Component for work with google api based on google/apiclient

1243.1k1](/packages/skeeks-yii2-google-api)[apexwire/yii2-restclient

Tools to use API as ActiveRecord for Yii2

143.5k](/packages/apexwire-yii2-restclient)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
