yii2 RESTful 接口 api -2 : 自定义函数

yii2 的 restful 接口的默认  是帮写了很多的方法

下面我们需要书写自己的接口方法,譬如搜索方法。

1.更改配置:

'urlManager' => [  
            'class' => 'yii\web\UrlManager',  
            'enablePrettyUrl' => true,  
            'enableStrictParsing' => true,  
            'showScriptName' => false,  
            'rules' => [  
                '' => 'cms/index',  
                  
                  
                ['class' => 'yii\rest\UrlRule', 'controller' => 'customer/api',  
                  
                  'pluralize' => false,  
  
                ],  
                #  定义方法: public function actionSearch($name);   <name> 就是search方法传入的参数  
                'POST customer/api/search/<name>' => 'customer/api/search',  
                //'POST customer' => 'customer/index/create',  
                  
  
            ],  
              
        ],

也就是添加:

'POST customer/api/search/<name>' => 'customer/api/search',

 

name代表的是参数

2.我们需要返回的是json格式:

<?php  
namespace myapp\frontend\code\ECM\Customer\controllers;  
use yii\web\Response;  
use Yii;  
  
use yii\rest\ActiveController;  
use myapp\frontend\code\ECM\User\models\Product;  
class ApiController extends ActiveController  
{  
    public $modelClass = 'myapp\frontend\code\ECM\User\models\Product';  
      
    public function behaviors()  
    {  
        $behaviors = parent::behaviors();  
        #定义返回格式是:JSON  
        $behaviors['contentNegotiator']['formats']['text/html'] = Response::FORMAT_JSON;  
        return $behaviors;  
    }  
      
    public function actionSearch($name){  
        $one = Product::findOne(['name'=>$name]);  
        return $one;  
    }  
}

3. 然后访问:

curl -i -H "Accept:application/json" -H "Content-Type:application/json" -XPOST "http://10.10.10.252:800/customer/api/search/xxxx"

我们发现 name 为xxxx的条目被打印出来了

HTTP/1.1 200 OK  
Server: nginx  
Date: Wed, 18 Nov 2015 02:26:40 GMT  
Content-Type: application/json; charset=UTF-8  
Transfer-Encoding: chunked  
Connection: keep-alive  
X-Powered-By: PHP/5.4.34  
  
{"id":2,"name":"xxxx","description":"ddddd","image":null,"status":null,"created_at":null}

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注