2017-02-14 2 views
1

У меня есть существующее приложение Yii2 и пытались реализовать REST API в качестве дополнительного модуля (возможно, модуль не является правильным способом для этого?) Но у меня есть некоторые проблемы с настройкой структуры маршрута. Он не совсем работает и не соответствует ожидаемым результатам, основанным на following guide.Yii2 REST API как конфигурация маршрута модуля

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

module 
    api 
    controllers 
     UserController.php 
    Module.php 

UserController.php

<?php 

namespace app\modules\api\controllers; 

use yii\rest\ActiveController; 

class UserController extends ActiveController 
{ 
    public $modelClass = 'app\models\User'; 
} 

module.php

<?php 

namespace app\modules\api; 

/** 
* onco module definition class 
*/ 
class Module extends \yii\base\Module 
{ 
    public $defaultController = 'user'; 
    /** 
    * @inheritdoc 
    */ 
    public $controllerNamespace = 'app\modules\api\controllers'; 

    /** 
    * @inheritdoc 
    */ 
    public function init() 
    { 
     parent::init(); 

     // custom initialization code goes here 
    } 
} 

В моей конфигурации файл У меня есть добавлено следующее:

'request' => [ 
    ... 
      'parsers' => [ 
       'application/json' => 'yii\web\JsonParser', 
      ] 
     ], 
    ... 
    'urlManager' => [ 
     'enablePrettyUrl' => true, 
     'showScriptName' => false, 
     'enableStrictParsing' => false, // have tried as true also 
    'rules' => [ 
    ... 
    ['class' => 'yii\rest\UrlRule', 'controller' => '\app\modules\api\controllers\user'], 
      ], 
    ], 
    ... 
    'modules' => [ 
     ... 
     'api' => [ // module for RESTful API 
      'class' => 'app\modules\api\Module', 
     ], 
    ] 

Когда я бегу по следующим адресам через почтальона я получаю следующее:

Я не уверен, почему предсказанные маршруты отмеченных в документации, как:

Попытки его с вышеприведенным минимальным количеством усилий, вы должны уже закончили свою задачу создания RESTful API-интерфейсов для доступ к данным пользователя . Созданные вами API включают: GET/users: список всех пользователей по страницам;

HEAD/пользователи: показать обзорную информацию о листинге пользователя;

POST/пользователи: создать нового пользователя;

GET/users/123: вернуть данные пользователя 123;

HEAD/пользователи/123: показать обзорную информацию пользователя 123;

PATCH/пользователи/123 и PUT/пользователи/123: обновите пользователя 123;

УДАЛИТЬ/пользователей/123: удалить пользователя 123;

ОПЦИИ/пользователи: показать поддерживаемые глаголы относительно конечных точек/пользователей;

OPTIONS/пользователей/123: показать поддерживаемые глаголы в отношении конечных пользователей// 123

Что я, вероятно, сделали неправильно в этой установке? Есть ли лучший способ реализовать API на существующем веб-сайте, поддерживая DRY-методы?

ответ

2

попробовать это:

'urlManager' => [ 
    'enablePrettyUrl' => true, 
    'enableStrictParsing' => true, 
    'showScriptName' => false, 
    'rules' => [ 
     [ 
      'class' => 'yii\rest\UrlRule', 
      'controller' => ['api/user'], 
     ] 
    ] 
], 
... 
'modules' => [ 
    ... 
    'api' => [ 
     'basePath' => '@app/modules/api', 
     'class' => 'app\modules\api\Module', 
    ], 
] 

быть также уверены, что для реализации prettyUrl-х related server server configs.

+0

Довольно URL-адреса уже включены для сайта, как есть. Я попробовал свои изменения, но получил тот же результат :-( – Jonnny

+0

'' controller '=> [' api/user '] 'вы попробовали его с' 'enableStrictParsing' => true'? –

+0

Я думаю, что это, возможно, сработало. я могу получить доступ к http: // localhost/site1/web/users и http: // localhost/site1/web/users/2, чтобы получить информацию обратно. Просто подтверждая другие требования – Jonnny

Смежные вопросы