use*_*496 9 yii2 yii2-advanced-app
我正在尝试在Yii2高级应用程序中构建REST API,以管理对我的数据库的简单查询.在一些教程之后,最后逐步构建指南中的示例,在"快速入门"中,让我的模型适用于GET和HEAD方法.
在模块中创建我的API服务,使用最少的设置正确设置,在backend/main.php上请求JSON解析器,在common/main.php中注册模块并在urlManager中创建规则(在最小的通常规则下面,enablePrettyUrl ,控制器/动作,......):
['class' => 'yii\rest\UrlRule', 'controller' => ['precapi']]
Run Code Online (Sandbox Code Playgroud)
但每当我尝试其他方法时,通过CURL或Postman REST Client,它总会给我一个405错误:
方法不允许.此URL只能处理以下请求方法:GET,HEAD.
我想我已经尝试了很多不同的配置和路径试图解决它,但没有任何结果.唯一的问题是'enableStrictParsing' => false'在urlManager中,因为它在某些URL上给出了404错误,而POST也不能用于此,尽管应用程序正常工作.
任何帮助将不胜感激.问候.
小智 11
我认为是多元化的问题,试试这个
['class' => 'yii\rest\UrlRule', 'controller' => 'precapi', 'pluralize'=>false],
Run Code Online (Sandbox Code Playgroud)
如果没有关于你的precapi控制器的基础知识的更多信息,我将假设它来自\yii\rest\ActiveController?
如果是这样,您可能会覆盖verbs()控制器中的-function:默认实现如下:
protected function verbs()
{
return [
'index' => ['GET', 'HEAD'],
'view' => ['GET', 'HEAD'],
'create' => ['POST'],
'update' => ['PUT', 'PATCH'],
'delete' => ['DELETE'],
];
}
Run Code Online (Sandbox Code Playgroud)
我想,鉴于您的意见,UrlManager配置确实存在一个小问题,所以我回去看了一下,看到您将控制器添加到模块中.
手册有这样的说法:
此复合规则中的规则正在处理的控制器ID(例如,用户,后评论).如果控制器在模块内(例如admin/user),它应该以模块ID为前缀.
可能是问题吗?
| 归档时间: |
|
| 查看次数: |
8655 次 |
| 最近记录: |