标准的RESTFULNER或模型忽略YII 2中的动词2

发布于 2025-02-06 16:00:33 字数 2963 浏览 2 评论 0 原文

tl; dr 我遵循官方指南。除 put /修补动词外,一切似乎都在起作用。 200 OK 代码将返回,但实际模型未更新。怎么了


? use-composer“ rel =” nofollow noreferrer>创建一个空白的yii 2项目,该项目具有创建一个REST usercontroller 对于已经存在的用户模型:

namespace app\controllers;
use yii\rest\ActiveController;

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

我已经修改了模型以使所有字段都有安全:

public function rules()
{
    return [
        ['status', 'default', 'value' => self::STATUS_INACTIVE],
        ['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_INACTIVE, self::STATUS_DELETED]],
        [['username', 'email'], 'required'],
        [['username', 'email'], 'unique'],
        ['email', 'email'],
        [['password_hash', 'password_reset_token', 'verification_token', 'auth_key', 'status,created_at', 'updated_at', 'password'], 'safe'],
    ];
}

我有配置的URL规则 collefized and parrofate noreferrer”>多元化和非上载的路径

'urlManager' => [
    'enablePrettyUrl' => true,
    'enableStrictParsing' => true,
    'showScriptName' => false,
    'rules' => [
        [
            'class' => 'yii\rest\UrlRule',
            'controller' => 'user',
            'pluralize' => false,
            'except' => ['index'],
        ],
        [
            'class' => 'yii\rest\UrlRule',
            'controller' => 'user',
            'patterns' => [
                'GET,HEAD,OPTIONS' => 'index',
            ],
        ],
    ],

我有启用json Input ,如果这很重要:

'request' => [
    'parsers' => [
        'application/json' => 'yii\web\JsonParser',
    ]
]

补丁/用户/123 / PUT/USESS/123 外。在失眠症中执行时,我会得到 200 OK ,但是返回的记录没有修改的迹象:

“在此处输入映像”

我可能错了什么?

tl;dr I have followed the official guide. Everything seems working except for PUT/PATCH verb. The 200 OK code is returned, but the actual model isn't updated. What can be wrong?


I have created a blank Yii 2 project that have created a REST UserController for already existing User model:

namespace app\controllers;
use yii\rest\ActiveController;

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

I have modified the model to have all fields safe:

public function rules()
{
    return [
        ['status', 'default', 'value' => self::STATUS_INACTIVE],
        ['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_INACTIVE, self::STATUS_DELETED]],
        [['username', 'email'], 'required'],
        [['username', 'email'], 'unique'],
        ['email', 'email'],
        [['password_hash', 'password_reset_token', 'verification_token', 'auth_key', 'status,created_at', 'updated_at', 'password'], 'safe'],
    ];
}

I have configured URL rules to have both pluralized and non-pluralized paths:

'urlManager' => [
    'enablePrettyUrl' => true,
    'enableStrictParsing' => true,
    'showScriptName' => false,
    'rules' => [
        [
            'class' => 'yii\rest\UrlRule',
            'controller' => 'user',
            'pluralize' => false,
            'except' => ['index'],
        ],
        [
            'class' => 'yii\rest\UrlRule',
            'controller' => 'user',
            'patterns' => [
                'GET,HEAD,OPTIONS' => 'index',
            ],
        ],
    ],

I have enabled JSON input, if that matters:

'request' => [
    'parsers' => [
        'application/json' => 'yii\web\JsonParser',
    ]
]

All the verbs are processed correctly except for PATCH /users/123 / PUT /users/123. When executed in Insomnia, I am getting 200 OK, but the returned record shows no sign of modification:

enter image description here

What can be wrong or what am I missing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文