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 estUrlRule", "controller" => "ntag" , ], ] ],.haccess 配置(此处不做解释)
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) index.php [L]
controller 代码 , actions里是设置对应actions ,class 为action 路径 appcontroller ewsNewsAction (应用controller ews目录下的NewsAction).应为restful api 父类接口中完成基本的操作,但是这个默认的方式用到的不会太多,常用的大多都需要逻辑处理,verbs action 的请求方式,
<?php namespace appcontrollers; use yii estActiveController; use yiiaseInvalidConfigException; class NewsController extends ActiveController { public $modelClass = "appmodelsNews"; // public $updateScenario = Model::SCENARIO_DEFAULT; // public $createScenario = Model::SCENARIO_DEFAULT; public function actions() { return [ "index" => [ "class" => "appcontrollers ewsNewsAction", "modelClass" => $this->modelClass, ], //"update" =>"appcontrollers ewsUpdateAction", ]; } protected function verbs(){ return [ "index"=>["GET","HEAD"], ]; } }
action 代码 : return 可以输出;
<?php namespace appcontrollers ews; use appmodelsNews; class UpdateAction extends yiiaseAction { public $modelClass; public function run() { return "aaa"; } }
2基本配置到此为止,到这里基本上配置出了一个满足restful风格接口的controller,接下来的测试让我更加费解,我认为问题在urlmanager 解析上边,接下来的测试我会把问题罗列出来。
工具 postmam
- get 请求 controller rules规则第一条 host/natg
- get 请求 host/natg/ 注意url 多了/ .此处引入第一个问题 ,返回格式错误应该返回一带有status=404的JSON 或xml 而不是进入404页面,此处我怀疑是url解析错误(详细解试下,我对上边urlmananger 的理解,前四行基本路由解写规则,下便是restful api 解析.但是我认为我目前测试所走的解析方案是上边的基本规则,而不是restful api 解析,下一条我给出一个例子证实一下 )
- 此处为上述例子
- post create(或者delete) url:host/ntag/create ,再看到这个路由时,我就觉得有些问题 ,给出测试结果
- put update url:host/natg/update 这是 我觉得 比较奇怪的 默认的updateaction竟然永远修改不成成功 ,(此处用ations 里的自己设置action没有测试)
为了证实此处url走的是 updateAction ,更换请求方式会有下下图
3.遗留问题
1.urlmanager 到底怎么解析的,yii estUrlRule到底在什么时候起作用,
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的理解是 对一个地址的不同请求的操作。唉今天就到这里的。此贴会随之我的了解深入不断更改。
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇: php mcrypt CBC