wiki:pne-api
 ここの情報は古いです。ご理解頂いた上でお取り扱いください。

TOC

API開発プロジェクト

はじめに

外部からOpenPNEのデータを取得したり、操作するためのAPIを開発するプロジェクトです。 ニーズのありそうなAPIから順に開発をしていく予定です。

APIのインタフェースとしてはさまざま有りますが、まずは数を増やすことを優先し、 既存のXML_RPC方式を踏襲する方針を考えています。

#その他のアイデアをお持ちの方は書き込みお願いします。

ブランチ

  • ブランチは https://trac.openpne.jp/svn/OpenPNE/branches/prj/pne-api
  • 現在2.8.2ベースで以下5つのAPIを開発済みでコミットしています。2.10にも追加していく予定です。
    ・認証API 
    ・日記取得API 
    ・コメント書き込みAPI 
    ・あしあと取得API 
    ・あしあと書き込みAPI 
    
  • インタフェースについては以下を参照してください。

http://trac.openpne.jp/browser/OpenPNE/branches/prj/pne-api/doc/API%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9%E4%BB%95%E6%A7%98%E6%9B%B8.doc

XML_RPC方式 API 開発方針

  • APIプログラム配置ディレクトリ
    • webapp\modules\api\lib\xmlrpc\
  • PHPファイル名
    prefix_数字(3桁)_動作概要.php
     例:
       コミュニティを作成する場合
       com_001_create_community.php
       数字は通し番号で管理する(管理方法は要検討)
    
  • prefix
    • 動作に関連するprefixを選択する
      au - 認証
      as - あしあと
      ba - バナー
      bo - ブックマーク
      com - コミュニティ
      di - 日記
      fr - フレンド
      im - 画像
      mem - メンバ
      mes - メッセージ
      po - ポイント
      ra - ランキング
      re - レビュー
      sce - スケジュール
      
  • API追加手順
    (1)webapp\modules\api\lib\xmlrpc\ に prefix_数字(3桁)_動作概要.php を作成する
    (2)DBのテーブル c_api に以下のデータをinsertする
    
    c_api_id:数字(シーケンシャル)
    name:APIの名前
    ip:呼び出し元のIPアドレス
    
    *APIは許可されたIPアドレスからしかアクセスできない
    *http://ホスト/?m=admin&a=page_list_c_api からも設定可能
    
  • API の内部処理
    (1)パラメータのvalidateチェック
    (2)パラメータに従いデータをDBから検索・更新
    	(2-1)対応するSQLメソッドが webapp/lib/db 以下のファイルに
    		存在する可能性が高いので調べてみる
    
    	(2-2)存在すればSQLメソッド名に、以下のように対応したopメソッドを webapp\lib\OP.php に定義する
    
    		db_ashiato_c_ashiato_list4c_member_id
    			↓
    		op_ashiato_c_ashiato_list4c_member_id
    
    		定義したopメソッドのインタフェースはdbと同様とし、内部的にはdbメソッドを呼び出す作りとする。
    		イメージ
    		-------------------------
    		function op_ashiato_c_ashiato_list4c_member_id($c_member_id_to, $count)
    		{
    			return db_ashiato_c_ashiato_list4c_member_id($c_member_id_to, $count);
    		}
    		-------------------------
    
    		*OP.php内では OPクラスを定義し、全メソッドをstaticメソッドとして定義する
    		*この点はwebapp/lib/db 以下のファイルと異なる
    
    	(2-3)webapp/lib/db に存在しなければ、新規にopメソッドを追加し、内部でSQLを定義する。
    
    	(2-4)(2-2,3)で追加したメソッドをAPI内部から呼ぶ
    	
    
    
    	
    
    (3)検索・更新したデータをレスポンスとして返却
    
    *op.phpへコピーする理由
    webapp/lib/db 以下のメソッドは仕様変更が発生する可能性がある。
    これとは別に仕様を固定したメソッドを作成し、
    ブラウザ、API双方から呼び出せるような仕組みを取り入れたい。
    これに対応するため webapp\lib\op\op.php を追加する。
    
    まずは、APIで使用するメソッドを随時 op.php に再定義することでメソッドの数を増やしていく。
    
    

APIの整備・新設

  • カスタマイズ開発や、拡張モジュールの開発を支援するため、長期間サポートする関数群を新設する
  • OpenPNEバージョンのX.Y.Zにたいして同一のX(OpenPNE2.Y.Zだったら2)の間仕様を保持する。仕様が減らない、増えることはある。
  • 外部API(XMLRPC REST)と内部モジュール(PHP関数呼び出し)共通して本API関数群を利用できる

op_関数の新設

フェイスブックAPIを参考にしよう FBML fb:if(xxxx)

※確定

※検討中 関数案

  • op_c_member4c_member_id(c_member_id)【メンバーオブジェクト取得】
  • op_c_member4cookie() or op_c_member4cookie()【クッキーセッションからメンバーオブジェクトを取得】

プロジェクトチケット component=pne-api&resolution=|

未完了のプロジェクトチケット

#1014
op_退会関数の追加
#1040
op_create_community コミュニティ作成関数作成
#1041
APIラッピング xml4op関数を作成
#1042
op_add_member_4_community コミュニティへのメンバ追加関数作成
#1043
op_delete_member_4_community コミュニティからのメンバ退会関数作成
#1044
op_search_member SNS内のメンバ検索関数作成
#1045
op_search_myfriend マイフレンド検索関数作成
#1046
op_delete_community コミュニティ削除関数作成

WikiInclude(DIRECTORYNAVI)?

Last modified 10 years ago Last modified on Jan 11, 2008, 3:26:58 PM