コントローラ - Controller_Neapiクラス
コントローラ - Controller_Neapiクラス
Section titled “コントローラ - Controller_Neapiクラス”ここでは、ネクストエンジンAPIを使用するコントローラの基底クラスである、Base\Controller_Neapiについて説明いたします
beforeメソッド
Section titled “beforeメソッド”beforeメソッドの処理は以下の通りです
- ネクストエンジンAPIクライアントのインスタンスを格納
- ネクストエンジン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クラスページ作成