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
이상
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.