main.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?php
  2. $params = array_merge (
  3. require(__DIR__ . '/../../../common/config/params.php'),
  4. require(__DIR__ . '/../../../common/config/params-local.php'),
  5. require(__DIR__ . '/params.php'),
  6. require(__DIR__ . '/params-local.php')
  7. );
  8. return [
  9. 'id' => 'app-api',
  10. 'basePath' => dirname(__DIR__),
  11. 'bootstrap' => [
  12. 'log',
  13. //全局内容协商
  14. [
  15. //ContentNegotiator 类可以分析request的header然后指派所需的响应格式给客户端,不需要我们人工指定
  16. 'class' => 'yii\filters\ContentNegotiator',
  17. 'formats' => [
  18. 'application/json' => yii\web\Response::FORMAT_JSON,
  19. 'application/xml' => yii\web\Response::FORMAT_XML,
  20. //api 端目前只需要json 和 xml
  21. //还可以增加 yii\web\Response 类内置的响应格式,或者自己增加响应格式
  22. ],
  23. ]
  24. ],
  25. 'defaultRoute' => 'main/index',//默认控制器
  26. 'controllerNamespace' => 'api\controllers',
  27. //api 分模块 -- shizhongqi
  28. 'modules' => [
  29. // controllers 目录下的路由配置
  30. 'version_1' => [
  31. 'class' => 'api\controllers\v1\Module',
  32. 'defaultRoute' => 'index',
  33. ],
  34. /**
  35. * modules 目录下的路由配置
  36. * 这里我们用Module实现版本v1和v2
  37. */
  38. 'v1' => [
  39. 'class' => 'api\modules\v1\Module',
  40. 'defaultRoute' => 'index',
  41. ],
  42. 'v2' => [
  43. 'class' => 'api\modules\v2\Module',
  44. 'defaultRoute' => 'index'
  45. ],
  46. ],
  47. //
  48. 'components' => [
  49. 'jwt' => [
  50. 'class' => 'api\components\Jwt',
  51. ],
  52. 'user' => [
  53. 'identityClass' => 'common\models\xhAdmin',
  54. 'enableAutoLogin' => true,
  55. 'identityCookie' => [
  56. 'name' => 'backendUser', // unique for backend
  57. ],
  58. 'loginUrl' => ['main/login'],
  59. ],
  60. 'log' => [
  61. 'traceLevel' => YII_DEBUG ? 3 : 0,
  62. 'targets' => [
  63. [
  64. 'class' => 'yii\log\FileTarget',
  65. 'levels' => ['error', 'warning'],
  66. ],
  67. ],
  68. ],
  69. //新增,不理解有什么用处,后期了解下 -- shizhonqi
  70. 'response' => [
  71. 'class' => 'yii\web\Response',
  72. //设置 api 返回格式,错误码不在 header 里实现,而是放到 body里
  73. 'as resBeforeSend' => [
  74. 'class' => 'api\components\ResBeforeSendBehavior',
  75. 'defaultCode' => 500,
  76. 'defaultMsg' => 'error',
  77. ],
  78. //ps:components 中绑定事件,可以用两种方法
  79. //'on eventName' => $eventHandler,
  80. //'as behaviorName' => $behaviorConfig,
  81. //参考 http://www.yiiframework.com/doc-2.0/guide-concept-configurations.html#configuration-format
  82. ],
  83. //变动 -- shizhonqi
  84. //TODO 路由规则验证中
  85. 'urlManager' => [
  86. 'enablePrettyUrl' => true,
  87. // 注意:如果不需要严格解析路由请直接删除或注释此行代码
  88. // 'enableStrictParsing' => true,
  89. // 是否在URL中显示入口脚本。是对美化功能的进一步补充。
  90. 'showScriptName' => false,
  91. //路由不正确也能正常运行 -- ???
  92. 'rules' => [
  93. /*[
  94. 'class' => 'yii\rest\UrlRule',
  95. 'controller' => ['main'],
  96. // 由于 resetful 风格规定 URL 保持格式一致并且始终使用复数形式
  97. // 所以如果你的 controller 是单数的名称比如 UserController
  98. // 设置 pluralize 为 true (默认为 true)的话,url 地址必须是 users 才可访问
  99. // 如果 pluralize 设置为 false, url 地址必须是 user 也可访问
  100. // 如果你的 controller 本身是复数名称 UsersController ,此参数没用,url 地址必须是 users
  101. 'pluralize' => false, //是否启用复数形式,注意index的复数indices,我认为开启后不直观
  102. ],*/
  103. '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
  104. [
  105. 'class' => 'yii\rest\UrlRule',
  106. 'controller' => ['user'],
  107. 'pluralize' => false, //设置为false 就可以去掉复数形式了*/
  108. 'extraPatterns'=>[
  109. 'GET test'=>'test'
  110. ],
  111. ],
  112. // controllers 目录
  113. '<module:(version_)\d+>/<controller:\w+>/search'=>'<module>/<controller>/search',
  114. [
  115. 'class' => 'yii\rest\UrlRule',
  116. 'controller' => ['version_1/user'], // 默认路由 'defaultRoute' => 'index',
  117. 'pluralize' => false,
  118. ],
  119. // modules 目录
  120. //当然,如果自带的路由无法满足需求,可以自己增加规则
  121. 'GET <module:(v)\d+>/<controller:\w+>/search' => '<module>/<controller>/search',
  122. [
  123. 'class' => 'yii\rest\UrlRule',
  124. 'controller' => ['v1/user'], // 默认路由 'defaultRoute' => 'index',
  125. 'pluralize' => false,
  126. ],
  127. ],
  128. ],
  129. ],
  130. 'params' => $params,
  131. ]
  132. ;