И так, что мне нужно, это реализовать следующие экшины:
- создание маркета
- проверка уникального имени маркета
- редактирование маркета
- удаление маркета
- получение всех маркетов
- получение конкретного маркета по id
- получение кол-во маркетов по фильтру (например сколько всего маркетов в базе или сколько маркетов было создано за определенную дату)
Я почитал про рест апи и мне стали непонятны кое какие моменты. А именно:
Я пробовал создать все по примерам доков, создал контроллер и унаследовался от yii\rest\ActiveController
Код: Выделить всё
class MarketController extends ActiveController
{
public $modelClass = 'rest\versions\v1\models\Market';
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['rateLimiter'] = [
'class' => RateLimiter::className(),
'enableRateLimitHeaders' => false,
];
$behaviors['bootstrap'] = [
'class' => ContentNegotiator::className(),
'formats' => [
'application/json' => Response::FORMAT_JSON,
],
];
return $behaviors;
}
}
Как я понял yii\rest\ActiveController реализует по дефолту следующие методы (в моем случае для маркетов) :
Код: Выделить всё
GET /users: разбитый на страницы список всех пользователей;
HEAD /users: общая информация по списку пользователей;
POST /users: создание нового пользователя;
GET /users/123: подробная информация о пользователе 123;
HEAD /users/123: общая информация о пользователе 123;
PATCH /users/123 и PUT /users/123: обновление пользователя 123;
DELETE /users/123: удаление пользователя 123;
OPTIONS /users: список HTTP-методов, поддерживаемые точкой входа /users;
OPTIONS /users/123: список HTTP-методов, поддерживаемые точкой входа /users/123.
Но что если мне нужны дополнительные методы или сделать какие либо действия для маркетов в определенных контроллерах ? Например различную валидацию при создании нового маркете или проверить права на удаления маркета или дописать фильтр выборки для получения всех маркетов (выбрать все маркеты со статусом 1), что делать в таком случае ?
Нужно описывать каждый экшин и унаследоваться просто от Controller, правильно ли я понял ?