YII2 restful 试例

本文汇总近日对YII2 restful的尝试和遇到的问题,希望读者如果解决了我的问题请告诉我下。

环境:1.yii2-basic 2.apache

1.搭建yii2-basic  restufl

2.restful 相关测试

3.遗留问题


1.搭建yii2-basic restufl

config配置(请写到components里),这里有个坑 enableStringParsing 设置为true时,请把rules里的注释符号去掉. 没有详细设置路由解析的格式的话,会显示404.这里无法做到和资料的那样,尝试了很多次,必须要写详细规则(如果你们用资料里的方式成功了请留言).

				'urlManager' => [ 
						'enablePrettyUrl' => true,
						'showScriptName' => false,
						'enableStrictParsing' => true,
						'rules' => [ 
 								#'<controller:\w+>/'=>'<controller>/',
								#'<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' => 'ntag' ,
								],
								
								 
						] 
				],
.haccess 配置(此处不做解释)

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php [L]

controller 代码 , actions里是设置对应actions ,class 为action 路径 app\controller\news\NewsAction (应用\controller\news目录下的NewsAction).应为restful api 父类接口中完成基本的操作,但是这个默认的方式用到的不会太多,常用的大多都需要逻辑处理,verbs  action 的请求方式,

<?php

namespace app\controllers;

use yii\rest\ActiveController;
use yii\base\InvalidConfigException;

class NewsController extends ActiveController {
	public $modelClass = 'app\models\News';
// 	public $updateScenario = Model::SCENARIO_DEFAULT;
// 	public $createScenario = Model::SCENARIO_DEFAULT;

	public function actions() {
		return [ 
				'index' => [ 
						'class' => 'app\controllers\news\NewsAction',
 						'modelClass' => $this->modelClass, 
				],
				//'update' =>'app\controllers\news\UpdateAction',

		];
	}
	
	protected function verbs(){
		return [
				'index'=>['GET','HEAD'],
		];
	}
}

action 代码 : return  可以输出;

<?php
namespace app\controllers\news;

use app\models\News;
class UpdateAction extends \yii\base\Action {
	public $modelClass;
	public function run() {
		return 'aaa';
	}
}

 2基本配置到此为止,到这里基本上配置出了一个满足restful风格接口的controller,接下来的测试让我更加费解,我认为问题在urlmanager 解析上边,接下来的测试我会把问题罗列出来。

工具 postmam

  • get 请求  controller  rules规则第一条    host/natg

ss

  • get 请求   host/natg/  注意url 多了/ .此处引入第一个问题 ,返回格式错误应该返回一带有status=404的JSON 或xml 而不是进入404页面,此处我怀疑是url解析错误(详细解试下,我对上边urlmananger  的理解,前四行基本路由解写规则,下便是restful api 解析.但是我认为我目前测试所走的解析方案是上边的基本规则,而不是restful api 解析,下一条我给出一个例子证实一下  )

sss

  • 此处为上述例子  

  • post   create(或者delete)   url:host/ntag/create     ,再看到这个路由时,我就觉得有些问题 ,给出测试结果
有错的,直接把sql的错误给返回

sssss
 正常的  返回你调教的信息   

ssss


  • put update    url:host/natg/update     这是 我觉得 比较奇怪的 默认的updateaction竟然永远修改不成成功 ,(此处用ations 里的自己设置action没有测试)

ssss


为了证实此处url走的是 updateAction ,更换请求方式会有下下图


ssss

3.遗留问题

1.urlmanager 到底怎么解析的,yii\rest\UrlRule到底在什么时候起作用,

2. 目前对 yii2 retful api的理解是,get:host/controller/action    get信息,  post:host/controllers/action   提交信息(例如get: www.basic.com/natg/1   post:www.basic.com/natg/create 创建信息),  这方式不对吧,我对restful的理解是 对一个地址的不同请求的操作。唉今天就到这里的。此贴会随之我的了解深入不断更改。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值