REST 404 на POST

Всё что касается построения API
Ответить
german.igortcev
Сообщения: 251
Зарегистрирован: 2014.08.18, 14:01

REST 404 на POST

Сообщение german.igortcev »

Через GET все отрабатывает нормально. на пост у контроллера аллергия, не могу ошибку найти.

Код: Выделить всё

<?php
namespace api\controllers;

use common\models\Widgets;
use Yii;
use yii\filters\AccessControl;
use yii\filters\auth\QueryParamAuth;
use yii\filters\VerbFilter;
use yii\rest\ActiveController;

class WidgetController extends ActiveController
{
    public $modelClass = 'common\models\Widgets';

    public function behaviors()
    {
//        использует класс User указанный в настройках и метод по тоукену
        $behaviors = parent::behaviors();
        $behaviors['authenticator'] = ['class' =>  QueryParamAuth::className()];
        $behaviors['verbs'] = [
            'class' => VerbFilter::className(),
            'actions' => [
                'index'  => ['post'],

            ],
        ];
        $behaviors['access'] = [
            'class' => AccessControl::className(),
            'rules' =>[
                [
                    'allow' => true,
                    'actions' => ['index'],
                    'matchCallback' => function ($rule, $action) {
                        return $this->checkIP($rule , $action);
                    }
                ],
            ],
        ];



        return $behaviors;
    }

    public function actions()
    {
        $actions = parent::actions();

        // Отключение действий по умолчанию

        unset
        (
            $actions['delete'],
            $actions['create'],
            $actions['view'],
            $actions['options'],
            $actions['update']
        );

        return $actions;
    }

    public function actionIndex(){
        $userHost = Yii::$app->request->userHost;
        return Widgets::findAll(1);
    }

    protected function checkIP($rule , $action){
        $userHost = Yii::$app->request->userHost;
        $userIP = Yii::$app->request->userIP;
        return true;
    }




}

Код: Выделить всё

'urlManager' => [
            'enablePrettyUrl' => true,
            'enableStrictParsing' => true,
            'showScriptName' => false,
            'rules' => [
                ['class' => 'yii\rest\UrlRule', 'controller' => 'widget'],
            ],
        ], 
Ответить