Yii 2 프레임 워 크 에 API 모듈 추가

환경 배치
1. read fucking Yii Documents.
http://www.yiichina.com/doc/guide/2.0
2. 의존 주입 모드 이해
Java 설명:
http://blog.csdn.net/taijianyu/article/details/2338311/
3. advanced 템 플 릿 배치 Yii 2 사용 하기
https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide/start-installation.md
\ # init 명령 을 실행 하여 설정 해 야 합 니 다. 이 명령 을 실행 해야만 environment 디 렉 터 리 에서 dev 나 prod 환경의 설정 정보 와 샘플 설정 을 프로젝트 에 들 어가 야 사용 가능 여 부 를 테스트 할 수 있 습 니 다.
4. 샘플 을 사용 할 수 있 는 지, 처음부터 검사 할 수 없습니다.
모듈 구성
1. advanced 디 렉 터 리 에서 api 디 렉 터 리 를 만 들 고 frontend 나 backend 모듈 에서 모든 파일 을 복사 합 니 다.
2. api 의 별명 을 설정 합 니 다. 설정 하지 않 으 면 긴 전체 이름 을 설정 해 야 합 니 다. 오류 가 발생 하기 쉽 고 번 거 롭 습 니 다.
advanced / common / config / boottstrap. php 를 다음 과 같이 수정 합 니 다.
<?php
Yii::setAlias('@common', dirname(__DIR__));
Yii::setAlias('@frontend', dirname(dirname(__DIR__)) . '/frontend');
Yii::setAlias('@backend', dirname(dirname(__DIR__)) . '/backend');
Yii::setAlias('@api', dirname(dirname(__DIR__)) . '/api'); \\      
Yii::setAlias('@console', dirname(dirname(__DIR__)) . '/console');

3. api 모듈 의 main. php 프로필 설정
<?php
$params = array_merge(
    require(__DIR__ . '/../../common/config/params.php'),
    require(__DIR__ . '/../../common/config/params-local.php'),
    require(__DIR__ . '/params.php'),
    require(__DIR__ . '/params-local.php')
);

return [
    'id' => 'app-api',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'modules' => [ \\     v1 v2,          'v1' => [ 'class' => 'api\modules\v1\Module' ], 'v2' => [ 'class' => 'api\modules\v2\Module' ] ],
    'controllerNamespace' => 'api\controllers',
    'components' => [
        'user' => [
            'identityClass' => 'common\models\User',
            'enableAutoLogin' => false, // API change to false
            'enableSession' => false,  // API ++
            'loginUrl' => null // API ++
        ],
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'errorHandler' => [
            'errorAction' => 'site/error',
        ],
//         'urlManager' => [
//             'enablePrettyUrl' => true, //     URL
//             'enableStrictParsing' => true, //        url  
//             'showScriptName' => false, //  URL             
//             'rules' => [
//                  [
//                      'class' => 'yii\rest\UrlRule',
//                      'controller' => [
//                          'v1/site'
//                      ]
//                  ],
//                  [
//                      'class' => 'yii\rest\UrlRule',
//                      'controller' => [
//                          'v2/site'
//                      ]
//                  ]
//              ]
//         ],
    ],
    'params' => $params,
];

\ # 이 main. php 파일 은 응용 프로그램 을 만 들 때 설정 항목 구조 응용 인 스 턴 스 로 사 용 됩 니 다.한 마디 로 하면 응용 프로그램 에 우리 가 두 개의 모듈 을 추가 했다 는 것 을 알 게 한다. v1 과 v2
4. main. php 에서 변경 한 바 에 따 르 면 우리 의 모듈 경 로 는 api \ modules \ v1 \ Module 입 니 다. 그럼 만 듭 시다.
    1 > api 디 렉 터 리 에 modules 디 렉 터 리 를 만 들 고 modules 디 렉 터 리 에 v1 디 렉 터 리, v2 디 렉 터 리 를 만 듭 니 다.
    2 > v1 과 v2 디 렉 터 리 에 각각 Module. php 파일 을 만 듭 니 다. 내용 은 다음 과 같 습 니 다.
빨간색 부분 은 v1 인지 v2 인지 에 따라 각각 다르다.코드 는 주입 에 의존 할 때 이런 종류 가 있어 야 한 다 는 뜻 입 니 다. 이런 종류 가 없 으 면 실행 할 때 다음 과 같은 오 류 를 찾 을 수 없습니다.
5. 전체 Modules 의 디 렉 터 리 구조
v1 과 v2 디 렉 터 리 에 각각 만 듭 니 다: controllers, models, views 디 렉 터 리, 이 건 더 말 할 필요 가 없습니다.MVC,MVC。
기본 인터페이스 가 정 보 를 되 돌려 주기 위해 서 는 frontend 디 렉 터 리 구조 에 따라 controllers 디 렉 터 리 에 SiteController. php 를 만 듭 니 다.
4. 567913. \ # 할 말 이 없 으 면 JSON 으로 돌아 가 는 메시지 입 니 다.
만약 에 SiteController. php 를 사용 하고 싶 지 않다 면 site 라 는 컨트롤 러 ID 를 사용 하고 싶 지 않다 면 api / index. php 에 코드 를 추가 할 수 있 습 니 다.
<?php
namespace api\modules\v1;

class Module extends \yii\base\Module
{
    public $controllerNamespace = 'api\modules\v1\controllers';
    public function init()
    {
        parent::init();

        // ...          ...
    }
}
?>

그리고 v1 / controllers / 다음 에 새로운 HelloController. php 를 만 듭 니 다:
<?php
namespace api\modules\v1\controllers;
use yii\rest\Controller;
class SiteController extends ActiveController
{
    public function actionIndex()
    {
           \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
           return [
               'message' => 'API test Ok!',
               'code' => 100,
           ];
    }
}


?>

기본 값 으로 이 경로 호출: v1 / hello / index
 
이상

좋은 웹페이지 즐겨찾기