プログラミングメカブログ

Adults cling to the past, Children want to escape to the future

プログラミングメカブログ

Adults cling to the past, Children want to escape to the future

9月

18

APIを作るためのフレームワークを作った

  • POSTED BY 小谷松 丈樹 IN 創作
  • 1 Comment

概要

APIだけをいくつか作って欲しい、という依頼がそこそこあります。
フロント側は別の会社さんが入ってくれて、APIだけを実装すれば良い。
そんな時に使えるフレームワークを目指し、プロトタイプを作成しました。

大事なこと

GitHubに今回作ったフレームワークを上げました!
改良してプルリクください。改良してプルリクください。

目標

本番環境は最終的にこちらで管理できないかもしれないので、
htaccessやrewriteによる制御を必要としないおくだけ簡単フレームワークを作る。

主要技術・環境

  • PHP

実装

DB周り

各環境で異なるDB接続先を設定できるようにして、シングルトンパターンとかいうので作りました。参考
$pdo = Database::get()->handle(); でPDOオブジェクトを取得できるよう設計。

使い方

  • validate()メソッドにて入力パラメータのバリデーションを行う
  • delegate()メソッドにてメインの処理を行う
  • isPostOnly()やisHttpsOnly()で利用方法を限定できる

下記のように使えます。

レスポンス形式

エラー時

validate()メソッド内で、 $this->throwException(400, $error); としてエラーを投げます。
変数 $error の定義を array('framework_id'=>'フレームワークIDが入力されていません') などにしておくと、下記形式でレスポンスを返します。

正常時

delegate()メソッドの返り値をJSON化してレスポンスを生成します。
return array('hoge' => 'fuga'); と返すと、
ステータス200を自動で設定し、レスポンスを返します。

作るだけでは終わらない

API仕様書を作る必要がある場合に、雛形がないと毎回イチから作らなければならず面倒です。
フレームワーク化したおかげでレスポンス形式をだいたい固定できるのだから、
雛形も作って一緒に置いておけばいいじゃん、ということで雛形も作成。
入力、出力パラメータなど、雛形に沿って入力していけばOKにしました。
まずはBacklogに載せやすい形で、雛形を作成してwikiに置きました。
貼り付け場所によって最適化を強要するのは良くないし、雛形は増やしていこうかなー。

まとめ

社内独自フレームワークを超リスペクト…。

思い付いたらちょいちょい改良していくつもりです。
バリデーションがピュアPHPでゴリゴリ書かなきゃいけないので、要改善。
AutoLoadを組んでコンポーネントをうまく読み込むようにもしたい。

ついでに

シルバーウィーク暇してるエンジニアは改良手伝ってください。
よろしくお願いします。

Tags :

Comment ( 1 )

コメントを残す

Please type the characters of this captcha image in the input box

Please type the characters of this captcha image in the input box