休息Api模式解释?

时间:2014-06-06 13:44:47

标签: php rest yii

我是新来的api。

我想知道rest api的路由是如何工作的。我有一个api,它在一个路由中工作,而不在另一个路由中。为了将每个api调用绑定到特定的VERB,我需要做些什么修改。

例如我希望/ customer / view只能通过GET动词调用,put和post应该不能进行此调用,这可能与路由设置有关

这是我的路线..

有效的方法如下:

'<controller:\w+>'                   => '<controller>/list',
'<controller:\w+>/<action:\w+>'      => '<controller>/<action>',
'<controller:\w+>/<id:\d+>/<title>'  => '<controller>/view',
'<controller:\w+>/<id:\d+>'          => '<controller>/view',

一个不起作用的是这个..特别是这样调用的视图,基本上我可以从任何VERB调用它,如何绑定到特定的动词

https://myipaddress/wiz-frontend-himanshu/customer/view/?id=test

休息路线

array('customer/list', 'pattern'=>'customer/<model:\w+>', 'verb'=>'GET'),
array('customer/view', 'pattern'=>'customer/<model:\w+>/<id:\w+>', 'verb'=>'GET'),
array('customer/update', 'pattern'=>'customer/<model:\w+>/<id:\d+>', 'verb'=>'PUT'),
array('customer/delete', 'pattern'=>'customer/<model:\w+>/<id:\d+>', 'verb'=>'DELETE'),
array('customer/create', 'pattern'=>'customer/<model:\w+>/<id:\d+>', 'verb'=>'POST'),

任何人都可以解释一下,这个模式到底做了什么,以及我需要做些什么更改才能运行我的查看电话

1 个答案:

答案 0 :(得分:2)

也许我误解了,但我想你需要做以下事情:

将您的api控制器放在单独的模块中(例如以api命名)并在您的网址管理器中指定以下规则:

// GET
array('api/<controller>/list', 'pattern'=>'api/<controller:\w+>', 'verb'=>'GET'),
array('api/<controller>/view', 'pattern'=>'api/<controller:\w+>/<id:\d+>', 'verb'=>'GET'),
// POST
array('api/<controller>/create', 'pattern'=>'api/<controller:\w+>', 'verb'=>'POST'),
// PUT
array('api/<controller>/update', 'pattern'=>'api/<controller:\w+>/<id:\d+>', 'verb'=>'PUT'),
array('api/<controller>/update', 'pattern'=>'api/<controller:\w+>', 'verb'=>'PUT'),
// DELETE
array('api/<controller>/delete', 'pattern'=>'api/<controller:\w+>/<id:\d+>', 'verb'=>'DELETE'),
array('api/<controller>/delete', 'pattern'=>'api/<controller:\w+>', 'verb'=>'DELETE'),

所以你可以通过这个网址打电话给你的api:

  

GET:/ api / users - 用户列表(actionList()控制器中的users

     

获取:/ api / users / 12 - ID = 12的用户(actionView() users   控制器)

     

POST:/ api / user - 在actionCreate()控制器中创建新用户(users

     

PUT:/ api / user / 12 - 更新ID为12的用户actionUpdate() users   控制器)

     

删除:/ api / user / 12 - 删除ID为12的用户actionDelete() users   控制器)