コンテンツにスキップ

コントローラ - Controller_Neapiクラス

コントローラ - Controller_Neapiクラス

Section titled “コントローラ - Controller_Neapiクラス”

ここでは、ネクストエンジンAPIを使用するコントローラの基底クラスである、Base\Controller_Neapiについて説明いたします

beforeメソッドの処理は以下の通りです

  1. ネクストエンジンAPIクライアントのインスタンスを格納
  2. ネクストエンジンAPIクライアントのインスタンスにログイン済みのユーザ情報をセット

2でセッションに格納されたユーザ情報ではなく、DBの内容を取得しているのは、

セッションに保存されたアクセストークンが途中で使用期限切れになり、DBの値が更新される恐れがあるためです

そのため、常にDBから最新のアクセストークンを取得しています

つまり、画面遷移をするたびにSELECTが実行されます

しかし、最新のアクセストークンを常に取得する必要が有るため、このような処理にしております

abstract class Controller_Neapi extends Controller_Base {
/**
* ネクストエンジンAPIクライアントのインスタンスを格納する
* @var \Nextengine\Api\Client
*/
protected static $client;
/**
* APIを使用する画面で共通処理として必要な処理、クライアントの初期化を行う。
*
* @return void
*/
public function before()
{
parent::before();
if(is_null($this->user)) {
\Response::redirect('/auth/login');
}
self::$client = new \Nextengine\Api\Client_Router();
self::$client->setUser($this->user);
}
}

Controller_Neapiクラスを継承したクラスのデモ

Section titled “Controller_Neapiクラスを継承したクラスのデモ”

fuel/modules/demo/classes/controller/api.phpに、

Controller_Neapiクラスを継承したクラスのデモとして、Controller_Apiクラスを定義しています

ネクストエンジンアプリ基盤を動かすページのAPIを試すで使用したクラスです

このクラスのコードを説明いたします

namespace Demo;
class Controller_Api extends \Controller_Neapi {
public function action_find()
{
$data = array(
'products' => self::$client->apiExecute('/api_v1_master_goods/search', array(
'fields' => 'goods_id,goods_name,stock_quantity,supplier_name',
'limit' => 5
)),
'divisions' => array(
'order' => self::$client->apiExecute('/api_v1_system_order/info'),
'credit' => self::$client->apiExecute('/api_v1_system_credittype/info'),
)
);
$this->template->title = 'Demo » Api » find';
$this->template->content = \View::forge('api/find', $data);
}
}

Controller_Neapiクラスを継承しているため、親クラスのbefore()でインスタンスが初期化され、

self::$clientでネクストエンジンAPIクライアントのインスタンスにアクセスできます

ネクストエンジンAPIを使用するには、apiExecuteメソッドを実行します

apiExecuteメソッドの説明は、SDKのドキュメントを御覧下さい

使用できるAPI一覧は、APIのドキュメントを御覧下さい


Controller_Neapiを継承する際に気をつけること

Section titled “Controller_Neapiを継承する際に気をつけること”

ネクストエンジンAPIを使用しないアクションを混在させない

Section titled “ネクストエンジンAPIを使用しないアクションを混在させない”

Controller_Neapiを継承すると、アクセスのたびにセッションを見に行き、

セッションにユーザ情報が保存されていなければ認証処理へリダイレクトしてしまいます

そのため、ネクストエンジンへのログインが不要なアクションを、コントローラ内に混在させないで下さい

設計レベルで、ネクストエンジンAPIを使用する必要が有る・無いを分けてコントローラを実装して下さい


  • 2015/02/17: コントローラ - Controller_Neapiクラスページ作成