Yii2 rest api - Url管理器添加参数

时间:2017-10-20 08:49:37

标签: php rest api yii2 yii-url-manager

我正在开发一个拥有4级用户的api。管理员,经销商,渠道和客户。所有级别的呼叫率都存储在相应的_rate表中。

管理员可以查看所有用户级别的费率,经销商可以查看自己的费率以及所有渠道和客户,渠道本身及其客户等。

所以当经销商开火时:

api.dev/v1/call-rates

返回了tbl_reseller_rate,但是我希望能够指定我想查看的费率,例如

api.dev/v1/call-rates/channels

api.dev/v1/call-rates/customers

所以我可以这样做:

if (strpos($url,'channels') !== false) 
{
    flip to channel model; 
} else if (strpos($url,'customers') !== false) 
{
    flip to customer model; 
}

另一个要求是单独查看记录,以便url需要接受ID参数,如下所示:

api.dev/v1/call-rates/channel/1

任何帮助都会受到大力赞赏。提前致谢

1 个答案:

答案 0 :(得分:2)

您应该像这样配置REST Url:

[
    'POST v1/call-rates/<type>' => 'your_controller/call_rates',
    'POST v1/call-rates/<type>/<id>' => 'your_controller/call_rates',
]

并在您的控制器文件中

public function call_rates($type, $id = null){
     if(!in_array($type, ['customer','channels'])) {
        // throw bad request exception here 
     }

     // Do what ever you want with $type variable.

}

对于ID路由,您可以更改它的方法,仅为示例我将其路由到控制器中的相同方法。

详情请见REST routes