简体   繁体   中英

Yii 2.0 Restful Web Service Api

Anyone using the integrated RESTful Web Service in Yii 2.0(beta)?

The instructions in the official documentation looks simple but it didn't work for me: I'm using the basic template, have used the gii module to create a simple 'category' model extending ActiveRecord , then i created the CategoriesController extending the ActiveController :

# Content of the file app\controllers\CategoriesController.php

<?php

namespace app\controllers;

use yii\rest\ActiveController;

class CategoriesController extends ActiveController
{
    public $modelClass = 'app\models\Category';
}

Now the model Category is assigned to the $modelClass property which will be needed by the ActiveController Class to relate it with the already defined CRUD actions like index or view :( see ActiveController::actions() )

My UrlManager configs looks like:

'urlManager' => [
            'enablePrettyUrl' => true,
            'enableStrictParsing' => true,
            'showScriptName' => false,

            'rules' => [
                ['class' => 'yii\rest\UrlRule', 'controller' => 'categories'],
            ],

        ],

Because my webserver's documentRoot and my webapp are in separate folders, my htaccess file under the WEB folder looks like:

RewriteEngine on

RewriteBase /~salem/alpha2/web

# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule . index.php

PrettyUrls & showScriptName to false are just working fine, but when trying to access to localhost/~salem/alpha2/web/categories i'm having the following error:

Not Found (#404)
Unable to resolve the request "categories/index".

Any one have any idea about what i'm doing wrong??

Thanks

The answer was in the same docs linked above: "...When creating a new controller class, a convention in naming the controller class is to use the type name of the resource and use singular form. For example, to serve user information, the controller may be named as UserController..." i desabled the enableStrictParsing, removed Rules, then renamed my controller to CategoryController now! it works!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM