今天我们简单搭建一个RESTful API服务,yii2 是个好东西,做接口更方便一些。
在实际的开发中,我们还是要进行一些优化。这一节我们记录一下怎么搭建。个人水平有限,仅做参考。
一 、首先复制一个目录进行修改,并在 bootstrap.php 文件中做一下配置,
Yii::setAlias('@app', dirname(dirname(__DIR__)) . '/app');
二 、目录配置好后,检测一下命名空间。之后看一下app 目录下的配置文件 main.php,一写注释我都下面的文件里了。
/yii2advanced/app/config/main.php
'app-api',//修改
'basePath' => dirname(__DIR__),
'controllerNamespace' => 'api\controllers',//修改
'bootstrap' => ['log'],
'modules' => [],
'components' => [
'cache' => [
'class' => 'yii\caching\ApcCache',
],
'request' => [
'csrfParam' => '_csrf-backend',
],
//把Cookie 和 session api 开发是不需要的。
'user' => [
'identityClass' => 'common\models\Adminuser',
'enableAutoLogin' => true,
'enableSession' => false,
//'identityCookie' => ['name' => '_identity-backend', 'httpOnly' => true],
],
// 'session' => [
// // this is the name of the session cookie used for login on the backend
// 'name' => 'advanced-backend',
// ],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'errorHandler' => [
'errorAction' => 'site/error',
],
],
],
],
'params' => $params,
];
找到/yii2advanced/app/config/main-local.php 文件
//返回json
'parsers' => [
'application/json' => 'yii\web\JsonParser',
]
$config = [
'components' => [
'request' => [
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
'cookieValidationKey' => 'jWDInnwhXOmKRPMQAVI_-sDHsZncjlbR',
//返回json
'parsers' => [
'application/json' => 'yii\web\JsonParser',
]
],
],
];
if (!YII_ENV_TEST) {
// configuration adjustments for 'dev' environment
$config['bootstrap'][] = 'debug';
$config['modules']['debug'] = [
'class' => 'yii\debug\Module',
];
$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = [
'class' => 'yii\gii\Module',
];
}
return $config;
三、我们可以用gii 生成一个model ,之后我们要创建一个控制器。如下:
modelClass;
return new ActiveDataProvider(
[
'query'=>$modelClass::find()->asArray(),
'pagination'=>['pageSize'=>5],
]
);
}
//这是自定义的搜索方法
public function actionSearch() {
return Article::find()->where(['like','title',$_POST['keyword']])->all();
}
}
四、我们把控制器的基本方法写好了。下面我们就要该配置路由了。还是在main.php文件中配置,
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
['class' => 'yii\rest\UrlRule',
'controller' => 'article',
'ruleConfig'=>[
'class'=>'yii\web\UrlRule',
'defaults'=>[
'expand'=>'createdBy',
]
],
'extraPatterns'=>[
'POST search' => 'search'
],
],
['class'=>'yii\rest\UrlRule',
'controller'=>'top10',
'except'=>['delete','create','update','view'],
'pluralize'=>false,
],
[
'class'=>'yii\rest\UrlRule',
'controller'=>'adminuser',//控制器 注意要小写
'except'=>['delete','create','update','view'], //除了这些方法,其他都可以
'pluralize'=>false,//不用加后缀s
'extraPatterns' => [
'POST login' => 'login', //自定义的方法
]
],
],
],
],
五、路由配置好了,正常来说我们是可以访问了。接口测试工具我是用Postman
今天聊到这,下次继续。如果想深入的了解yii,参考一下的链接:
https://www.yiichina.com/
http://www.digpage.com/index.html