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' => [ 
 								#'/'=>'/',
								#'/' => '/view',
								#'//' => '/',
								#'/' => '/',
								[ 
										'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 的请求方式,

 [ 
						'class' => 'app\controllers\news\NewsAction',
 						'modelClass' => $this->modelClass, 
				],
				//'update' =>'app\controllers\news\UpdateAction',

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

action 代码 : return  可以输出;


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

工具 postmam

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

YII2 restful 试例_第1张图片

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

YII2 restful 试例_第2张图片

  • 此处为上述例子  

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

YII2 restful 试例_第3张图片
 正常的  返回你调教的信息   

YII2 restful 试例_第4张图片


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

YII2 restful 试例_第5张图片


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


YII2 restful 试例_第6张图片

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的理解是 对一个地址的不同请求的操作。唉今天就到这里的。此贴会随之我的了解深入不断更改。

你可能感兴趣的:(Yii)