[英]How to fix not found error in REST API route
我正在嘗試使用Yii2 Advanced
框架創建REST API
應用程序。 但是在啟動時我有一個錯誤:
{"name":"Not Found","message":"Page not found.","code":0,"status":404,"type":"yii\\web\\NotFoundHttpException"}
在瀏覽器中,我使用這個 URL 來獲得結果:
https://api.site.com
https://api.site.com/site/index
https://api.site.com/posts/index
在 SiteController.php 中添加site/index
路由進行測試:
namespace api\controllers;
use yii\rest\Controller;
class SiteController extends Controller
{
public function actionIndex()
{
return 'api';
}
}
PostsController.php:
namespace api\controllers;
use yii\rest\ActiveController;
class PostsController extends ActiveController
{
public $modelClass = 'api\models\Posts';
}
帖子 model:
namespace api\models;
use yii\db\ActiveRecord;
class Posts extends ActiveRecord
{
public static function tableName(): string
{
return '{{%posts}}';
}
public function rules(): array
{
return [
[['user', 'keywords', 'description', 'created_at', 'updated_at', 'alias', 'title', 'excerpt', 'content'], 'required'],
[['alias'], 'unique'],
[['category', 'user', 'status', 'ready'], 'integer'],
[['created_at', 'updated_at', 'tags', 'keywords', 'description', 'alias', 'title', 'excerpt', 'content', 'source', 'meta'], 'string'],
[['alias', 'title'], 'string', 'min' => 3],
[['keywords', 'description', 'alias', 'title', 'excerpt'], 'string', 'max' => 255],
['thumbnail', 'required', 'message' => 'Image is required'],
];
}
}
應用程序的配置:
return [
'id' => 'app-api',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'controllerNamespace' => 'api\controllers',
'modules' => [],
'components' => [
'request' => [
'parsers' => [
'application/json' => 'yii\web\JsonParser',
],
],
'response' => [
'class' => 'yii\web\Response',
'format' => 'json',
],
'user' => [
'identityClass' => 'common\models\Usermeta',
'enableAutoLogin' => true,
'identityCookie' => [
'name' => '_identity-api',
'httpOnly' => true,
],
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
['class' => 'yii\rest\UrlRule', 'controller' => 'posts'],
'<controller><action>' => '<controller><action>',
],
],
],
];
我不再知道該去哪里了解問題所在。 錯誤在哪里? 如何解決?
嘗試刪除 urlManager 中'<controller><action>' => '<controller><action>'
,因為例如路由https://api.site.com/site/index
或https://api.site.com/posts/index
默認會調用 PostController 或 SiteController 的 indexAction。 也許它是錯誤的路由配置,所以它找不到你的 controller 類。
或者嘗試將規則編輯成這樣'<controller>/<action>' => '<controller>/<action>'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.