Yii2的RESTful API开发

这篇博客详细介绍了如何在Yii2框架下创建RESTful API,包括配置友好的URL,创建News Model和Controller,使用POSTMAN和CURL进行测试,以及RESTful API的验证和授权设置。在测试过程中,作者解决了405 Method Not Allowed的错误,并分享了相关调试技巧。
摘要由CSDN通过智能技术生成

参考文档:http://www.yiiframework.com/doc-2.0/guide-rest.html

以 DB 中的 news 表为例创建该资源的 RESTful API,最终的测试通过工具 POSTMAN 测试如下图;

通过 yii2 ,非常方便的创建 RESTful API

步骤:

  • 准备工作,配置友好的 URLManager
  • 创建News Model (via gii)
  • 创建News Controller
  • 测试用 POSTMAN 工具或者 CURL
  • Restful Api 验证和授权

1. 配置 friendly Url

		'urlManager' => [
			'enablePrettyUrl' => true,
			'showScriptName' => false,
			'enableStrictParsing' => true,
			'rules' => [
				'<controller:\w+>/<id:\d+>' => '<controller>/view',
				'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
				'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
				['class' => 'yii\rest\UrlRule', 'controller' => ['user', 'news']],
			],
		]
.htaccess 不要遗漏

更新20140731:特别说明, 上面的 rules 配置有误, 用于 yii1.x 版本中的 rules (前三行)在这个地方时多余的,而且引起了一个很严重的 bug

测试的过程中遇到一个这样的问题, 报错 405 yii2 RESTful API 405 Method Not Allowed

比如请求 PUT 方法 的 http://192.168.4.126/news/162?access-token=100-token

{
    "type": "yii\\web\\MethodNotAllowedHttpException",
    "name": "Method Not Allowed",
    "message": "Method Not Allowed. This url can only handle the following request methods: GET, HEAD.",
    "code": 0,
    "status": 405
}

这里由于不是在 yii2 的前台框架体系中,因此没有看到堆栈的调试信息,但是要调试也要找到这个报错 message 的所在:

yii2\filters\VerbFilter.php
    public function beforeAction($event)
    {
        $action = $event->action->id;  
        if (isset($this->actions[$action])) {
            $verbs = $this->actions[$action];
        } elseif (isset($this->actions['*'])) {
            $verbs = $this->actions['*'];
        } else {
            return $event->isValid;
        }

        $verb = Yii::$app->getRequest()->getMethod();
        $
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值