wiki と web サービス api
DESCRIPTION
Wiki と Web サービス API. Wiki と Web サービス API ( 1 ). Web サービス API の流行 Blog が投稿用の Web サービス API を提供 Amazon 、 Google 、 Yahoo などが各種情報取得のための Web サービス API を提供 最新 Web サービス API エクスプローラ( ISBN:4-7741-2496-6 ) Google Hacks ( ISBN:4-87311-136-6 ). Wiki と Web サービス API ( 2 ). XML-RPC での API 提供( 2002 年頃) - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Wiki と Web サービス API](https://reader035.vdocuments.mx/reader035/viewer/2022081421/56813747550346895d9edac5/html5/thumbnails/1.jpg)
Wiki と Web サービス API
![Page 2: Wiki と Web サービス API](https://reader035.vdocuments.mx/reader035/viewer/2022081421/56813747550346895d9edac5/html5/thumbnails/2.jpg)
Wiki と Web サービス API ( 1 )
Webサービス APIの流行 Blogが投稿用のWebサービス APIを提供 Amazon、 Google、 Yahooなどが各種情報取得のためのWebサービス APIを提供
最新Webサービス APIエクスプローラ( ISBN:4-7741-2496-6)
Google Hacks( ISBN:4-87311-136-6)
![Page 3: Wiki と Web サービス API](https://reader035.vdocuments.mx/reader035/viewer/2022081421/56813747550346895d9edac5/html5/thumbnails/3.jpg)
Wiki と Web サービス API ( 2 )
XML-RPCでの API提供( 2002年頃) Wiki RPC Version 1
JSP Wikiで提案、 twiki、MoinMoin、ModWiki、 phpWikiなどでも実装される。
参照系の機能が中心、データを base64エンコード。 Wiki RPC Version 2
JSP Wikiで提案、MoinMoin、 FSWikiなどで採用。 更新のための putPageなどが追加される。 データは基本的に utf-8、 base64エンコードはしない。
強いて言えばWiki RPCベースのものが多い。 2002年頃の議論で終わってしまっているため、あまり利用されてない?
![Page 4: Wiki と Web サービス API](https://reader035.vdocuments.mx/reader035/viewer/2022081421/56813747550346895d9edac5/html5/thumbnails/4.jpg)
Wiki と Web サービス(表 1 )
表 1 : Wiki RPC で定義されているプロシージャ
![Page 5: Wiki と Web サービス API](https://reader035.vdocuments.mx/reader035/viewer/2022081421/56813747550346895d9edac5/html5/thumbnails/5.jpg)
Wiki と Web サービス(表 2 )
表 2 : Wiki RPC の実装状況
![Page 6: Wiki と Web サービス API](https://reader035.vdocuments.mx/reader035/viewer/2022081421/56813747550346895d9edac5/html5/thumbnails/6.jpg)
Wiki RPC を使ってみる( 1 )
FSWiki向けのWiki RPCの実装まかまか氏が XML for Wikiで公開
設置 Sourceforgeからwiki3_5_9.zipを取得、展開
XML for Wikiからwiki_xmlrpc-204.tar.gzを取得し、同ディレクトリに展開
![Page 7: Wiki と Web サービス API](https://reader035.vdocuments.mx/reader035/viewer/2022081421/56813747550346895d9edac5/html5/thumbnails/7.jpg)
Wiki RPC を使ってみる(図 1 )
wiki.cgi (要 Perl パス修正)
( CGI設置ディレクトリ、要書込み権限)
config
data
docs
lib
plugin
theme
tmpl
attach
backup
temp
wiki3_5_9.zipの内容
空フォルダを作成
(1) FS Wiki の設置
wiki_xmlrpc.cgi (要 Perl パス修正)
lib
Wiki_xmlrpc-204.tar.gzの内容
wikigate.cgi (要 Perl パス修正)
(2) Wiki RPC の追加
図 1 : FSWiki と Wiki RPC の設置
![Page 8: Wiki と Web サービス API](https://reader035.vdocuments.mx/reader035/viewer/2022081421/56813747550346895d9edac5/html5/thumbnails/8.jpg)
Wiki RPC を使ってみる( 2 )
Perlの XMLRPC-Liteモジュールでアクセス
Wikiページ一覧とページ情報の取得 wiki.getAllPagesとwiki.getPageInfoを使用ソースと結果は図 2
Wikiへの投稿と、HTML形式での取得 wiki.putPageとwiki.getPageHTMLを使用ソースと結果は図 3
![Page 9: Wiki と Web サービス API](https://reader035.vdocuments.mx/reader035/viewer/2022081421/56813747550346895d9edac5/html5/thumbnails/9.jpg)
Wiki RPC を使ってみる(図 2 )■ ソース
use XMLRPC::Lite;use Data::Dumper;$Data::Dumper::Indent = 0;
my $url = 'http://localhost/fswiki/wiki_xmlrpc.cgi';my $pages = XMLRPC::Lite->proxy( $url )->call('wiki.getAllPages')->result;foreach my $page (@{$pages}) { my $info = XMLRPC::Lite->proxy( $url )->call('wiki.getPageInfo', $page)->result; print Dumper($info), "\n";}
■ 結果
$VAR1 = {'lastModified' => '20050827T11:59:06','version' => '1','author' => '','name' => 'FrontPage'};$VAR1 = {'lastModified' => '20050827T11:59:06','version' => '1','author' => '','name' => 'Help'};$VAR1 = {'lastModified' => '20050827T11:59:06','version' => '1','author' => '','name' => 'Help/FSWiki'};$VAR1 = {'lastModified' => '20050827T11:59:06','version' => '1','author' => '','name' => 'Help/Hiki'};$VAR1 = {'lastModified' => '20050827T11:59:06','version' => '1','author' => '','name' => 'Help/YukiWiki'};
図 2 : Wiki RPC によるページ一覧とページ情報の取得
![Page 10: Wiki と Web サービス API](https://reader035.vdocuments.mx/reader035/viewer/2022081421/56813747550346895d9edac5/html5/thumbnails/10.jpg)
Wiki RPC を使ってみる(図 3 )■ ソース
use XMLRPC::Lite;use Jcode;my $url = 'http://localhost/fswiki/wiki_xmlrpc.cgi';my $page = jcode( ' 投稿テスト ' )->utf8;my $text = jcode( <<EOF )->utf8;!!! 投稿テスト結果
[XMLRPC for Wiki|http://www.donzoko.net/cgi/fswiki_xmlrpc/] 経由で投稿。
* 投稿できるのか?* 投稿したページを取得できるか?EOFprint "[ 投稿結果 ] “, XMLRPC::Lite->proxy( $url )->call('wiki.putPage', $page, $text)->result , "\n";print "[ 取得結果 ]\n“, XMLRPC::Lite->proxy( $url )->call('wiki.getPageHTML', $page)->result;
■ 結果
[ 投稿結果 ] 1[ 取得結果 ]<h2><a name="p0"> <a href="wiki.cgi?page=%C5%EA%B9%C6%A5%C6%A5%B9%A5%C8" class="wikipage"> 投稿テスト </a>結果 </a></h2><p><a href="http://www.donzoko.net/cgi/fswiki_xmlrpc/">XMLRPC for Wiki</a> 経由で投稿。 </p><ul><li> 投稿できるのか?</li><li> 投稿したページを取得できるか?</li></ul></ul>
図 3 : Wiki RPC によるページの投稿と取得
![Page 11: Wiki と Web サービス API](https://reader035.vdocuments.mx/reader035/viewer/2022081421/56813747550346895d9edac5/html5/thumbnails/11.jpg)
Wiki RPC を使ってみる(図 4 )
図 4 : Wiki RPC で投稿したページ
![Page 12: Wiki と Web サービス API](https://reader035.vdocuments.mx/reader035/viewer/2022081421/56813747550346895d9edac5/html5/thumbnails/12.jpg)
今後の可能性( 1) Web サービス API 仕様の方向
Atom API 最新 Web サービス API エクスプローラに 解説
Atom Autodiscovery などより練りこまれた仕組 XML-RPC のアプリケーション / サイトごとに異なる命令
群に対し、 REST の統一的な利用法 Kwiki に Atom API をサポートするプラグイン
Wykiwyg を公開した Socialtext が使用しているなど、 Kwiki の動向は無視できなくなる可能性が。
REST Atom 、 XML を使わないプレインテキストの REST
REST Wiki
![Page 13: Wiki と Web サービス API](https://reader035.vdocuments.mx/reader035/viewer/2022081421/56813747550346895d9edac5/html5/thumbnails/13.jpg)
今後の可能性( 2) Wiki API が可能にすること
Wiki のより自由な活用 Wiki の閲覧、更新を快適にするクライアント 複数の Wiki を横断するめた Wiki アプリケーション 共有ストレージとしての活用 ワークフローツールへの組み込み
Wiki のより自由なアーキテクチャ Wiki エンジンが Wiki ストレージに API でアクセス Wiki プラグインが Wiki エンジンや Wiki ストレージ
に API でアクセス 分散 Wiki ストレージ化
![Page 14: Wiki と Web サービス API](https://reader035.vdocuments.mx/reader035/viewer/2022081421/56813747550346895d9edac5/html5/thumbnails/14.jpg)
今後の可能性(図 4)
図 4 : Wiki エンジンと Wiki ストレージを切り離した Wiki システム
ブラウザアクセスgetPaceHTML
getPageText
Wiki エンジン Wiki ストレージ
getPageText
getPageText変換
putPageText getPageText
![Page 15: Wiki と Web サービス API](https://reader035.vdocuments.mx/reader035/viewer/2022081421/56813747550346895d9edac5/html5/thumbnails/15.jpg)
今後の可能性(図 5)
図 5 :より分散化した Wiki システム
Wiki エンジンサーバ
Wiki ストレージサーバ
Wiki プラグインサーバ
Wiki ストレージバックエンドblog エンジンサーバ