yii2 создает собственный Rest API

Я создаю свое собственное настраиваемое действие для некоторых расчетов, которое должно быть отправлено с помощью restful API в json. Проблема в том, что когда я создаю контроллер, унаследованный от activecontroller, то для действия индекса он запрашивает класс модели.

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

Я могу создать свое собственное пользовательское действие с любым именем, которое я хочу, например.

 public function actionFast()
    {
        echo "XXX";
    }

и внутри config/web.php

'urlManager' => [
            'showScriptName' => false,
            'enablePrettyUrl' => true
            ,
            'rules' => [
                ['class' => 'yii\rest\UrlRule', 'controller' => ['Apprest/Fast'], 'extraPatterns' => ['GET dast' => 'fast']],
            ],
        ],

но вместо моего пользовательского действия «Быстро» мне нужно использовать действие индекса для всех видов вычислений. Есть ли способ сделать это?

Во-вторых, я хочу сделать этот URL-адрес ограниченным только для URL-адреса GET, есть ли способ отправить пользователю сообщение об ошибке 404, если он попытается опубликовать сообщение на этой странице?


person wolvorinePk    schedule 09.02.2015    source источник


Ответы (1)


Если у вас нет модели, вы можете расширить прямо из yii\rest\Controller и добавить нужные вам действия

Здесь вы можете увидеть пример:

namespace api\controllers;
use yii\rest\Controller;
class MyController extends Controller
{
public function actionFast()
    {
        echo "XXX";
    }
}
person Mikola laviro    schedule 10.02.2015
comment
так что это означает, что я должен создать весь список ошибок, включая 404 и т. д., а также мне нужно вручную создать информацию заголовка, поскольку документ, который я хочу отправить, должен быть в формате json? Пожалуйста, уточните свой ответ немного больше - person wolvorinePk; 10.02.2015
comment
Все, что связано с rest API, реализовано в yii\rest\Controller Пожалуйста, посмотрите исходный код, и вы все увидите. Поэтому, если вы будете использовать этот контроллер, вам просто нужно добавить свои действия. Если вы посмотрите на исходный код activecontroller, то увидите, что этот контроллер наследуется от yii\rest\Controller. И все, что он делает, просто добавьте действия для работы с активной записью, такие как индекс, обновление ... поэтому, если вы хотите создать rest api без активных записей, вам просто нужно расширить из контроллера покоя и добавить свои действия - person Mikola laviro; 10.02.2015
comment
Здесь вы можете увидеть пример: ` namespace api\controllers; используйте yii\rest\Controller; класс MyController расширяет Controller { public function actionFast() { echo XXX; } }` - person Mikola laviro; 10.02.2015
comment
правильно, я сделал это и сделал свой собственный контроллер отдыха, но тип пантомимы заголовка страницы по-прежнему отображает html, хотя я вручную установил его в application/json в контроллере. - person wolvorinePk; 12.02.2015