我正在尝试使用json格式做一些非常简单的REST响应。
我创建了一个简单的模型:
<?php
namespace app\models;
use Yii;
use yii\db\ActiveRecord;
class Post extends ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'posts';
}
public function rules()
{
return [
[['title', 'content'], 'required'],
];
}
}
一个简单的控制器:
namespace app\controllers;
use Yii;
use yii\rest\ActiveController;
class PostsController extends ActiveController
{
public $modelClass = "app\models\Post";
}
?>
这是 web.php 文件的配置:
$config = [
'id' => 'basic',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'components' => [
'request' => [
'cookieValidationKey' => 'wcHYBrv4bXfLJYnWzrpJz_5vARaAeE9U',
'parsers' => [
'application/json' => 'yii\web\JsonParser',
],
],
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'enableStrictParsing' => false,
//'showScriptName' => false,
'rules' => [
'class' => 'yii\rest\UrlRule',
'controller' => 'posts',
]
],
Other attributes...
最重要的部分(我认为是)是 urlManager 配置,也许我遗漏了一些东西,但我不知道下面的错误在哪里。
当我使用方法GET执行请求时,一切都很好,但是使用任何其他方法都会失败。这是错误:
{
"name": "Method Not Allowed",
"message": "Method Not Allowed. This url can only handle the following request methods: GET, HEAD.",
"code": 0,
"status": 405,
"type": "yii\web\MethodNotAllowedHttpException"
}
我希望得到一个简单的回复,例如这个人进入this video我只是一步一步地做了相同的配置。
谢谢。
有更多信息,当我使用Postman时,我得到了这个Headers结果。
我不明白为什么只有ALLOW -> GET, HEAD
这是身体结果:
答案 0 :(得分:0)
尝试此配置:
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
['class' => 'yii\rest\UrlRule', 'controller' => 'post'],
],
],
答案 1 :(得分:0)
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
[
'class' => 'yii\rest\UrlRule',
'controller' => 'author',
'pluralize' => false
],
],
],
答案 2 :(得分:0)
当我必须要做类似的事情时,我会有所不同。尝试将urlManager中的类更改为“ yii \ rest \ UrlRule”
示例(此代码对我有用):
composer dump-autoload
现在尝试访问该URL POST frontend.dev/basic/web/post whit Postman