Soumettre la recherche
Mettre en ligne
WebDAV as Web API
•
4 j'aime
•
3,357 vues
Masaki Komagata
Suivre
using WebDAV as Web API
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 32
Recommandé
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
Ito Takayuki
#idcon vol.29 - #fidcon WebAuthn, Next Stage
#idcon vol.29 - #fidcon WebAuthn, Next Stage
Nov Matake
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
Hironobu Isoda
誰でもできるスマートシティ向けOSS : FIWAREのはじめかた
誰でもできるスマートシティ向けOSS : FIWAREのはじめかた
Shunsuke Kikuchi
【Unity道場Houdini編】Houdini Engine とプロシージャル法
【Unity道場Houdini編】Houdini Engine とプロシージャル法
UnityTechnologiesJapan002
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
Horizon View へのスマートカード認証の導入
Horizon View へのスマートカード認証の導入
shigeyat-vmw
Recommandé
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
Ito Takayuki
#idcon vol.29 - #fidcon WebAuthn, Next Stage
#idcon vol.29 - #fidcon WebAuthn, Next Stage
Nov Matake
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
Hironobu Isoda
誰でもできるスマートシティ向けOSS : FIWAREのはじめかた
誰でもできるスマートシティ向けOSS : FIWAREのはじめかた
Shunsuke Kikuchi
【Unity道場Houdini編】Houdini Engine とプロシージャル法
【Unity道場Houdini編】Houdini Engine とプロシージャル法
UnityTechnologiesJapan002
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
Horizon View へのスマートカード認証の導入
Horizon View へのスマートカード認証の導入
shigeyat-vmw
gRPC入門
gRPC入門
Kenjiro Kubota
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeNA
データセンターネットワークの構成について
データセンターネットワークの構成について
MicroAd, Inc.(Engineer)
golang profiling の基礎
golang profiling の基礎
yuichiro nakazawa
SPAのルーティングの話
SPAのルーティングの話
ushiboy
はじめようARCore in 札幌
はじめようARCore in 札幌
Takashi Yoshinaga
DynamoDBによるソーシャルゲーム実装 How To
DynamoDBによるソーシャルゲーム実装 How To
伊藤 祐策
Firebase Authを Nuxt + Railsの自前サービス に導入してみた
Firebase Authを Nuxt + Railsの自前サービス に導入してみた
Tomoe Sawai
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
個人番号カードと公的個人認証の民間利用について - OpenID Summit 2015
個人番号カードと公的個人認証の民間利用について - OpenID Summit 2015
OpenID Foundation Japan
FIDO2導入してみたを考えてみた
FIDO2導入してみたを考えてみた
FIDO Alliance
Unity WebSocket
Unity WebSocket
光晶 上原
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
Keycloakの最近のトピック
Keycloakの最近のトピック
Hitachi, Ltd. OSS Solution Center.
SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)
Naohiro Fujie
UnityのMultiplayサービスの得意な事
UnityのMultiplayサービスの得意な事
Unity Technologies Japan K.K.
【Unity道場スペシャル 2017札幌】乱数完全マスター
【Unity道場スペシャル 2017札幌】乱数完全マスター
Unity Technologies Japan K.K.
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
Masaru Kurahayashi
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
Yugo Shimizu
組織におけるアイデンティティ管理の基本的な考え方
組織におけるアイデンティティ管理の基本的な考え方
Naohiro Fujie
漬け水に浸かる
漬け水に浸かる
Masaki Komagata
フィヨルドでのCaster活用事例
フィヨルドでのCaster活用事例
Masaki Komagata
Contenu connexe
Tendances
gRPC入門
gRPC入門
Kenjiro Kubota
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeNA
データセンターネットワークの構成について
データセンターネットワークの構成について
MicroAd, Inc.(Engineer)
golang profiling の基礎
golang profiling の基礎
yuichiro nakazawa
SPAのルーティングの話
SPAのルーティングの話
ushiboy
はじめようARCore in 札幌
はじめようARCore in 札幌
Takashi Yoshinaga
DynamoDBによるソーシャルゲーム実装 How To
DynamoDBによるソーシャルゲーム実装 How To
伊藤 祐策
Firebase Authを Nuxt + Railsの自前サービス に導入してみた
Firebase Authを Nuxt + Railsの自前サービス に導入してみた
Tomoe Sawai
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
個人番号カードと公的個人認証の民間利用について - OpenID Summit 2015
個人番号カードと公的個人認証の民間利用について - OpenID Summit 2015
OpenID Foundation Japan
FIDO2導入してみたを考えてみた
FIDO2導入してみたを考えてみた
FIDO Alliance
Unity WebSocket
Unity WebSocket
光晶 上原
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
Keycloakの最近のトピック
Keycloakの最近のトピック
Hitachi, Ltd. OSS Solution Center.
SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)
Naohiro Fujie
UnityのMultiplayサービスの得意な事
UnityのMultiplayサービスの得意な事
Unity Technologies Japan K.K.
【Unity道場スペシャル 2017札幌】乱数完全マスター
【Unity道場スペシャル 2017札幌】乱数完全マスター
Unity Technologies Japan K.K.
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
Masaru Kurahayashi
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
Yugo Shimizu
組織におけるアイデンティティ管理の基本的な考え方
組織におけるアイデンティティ管理の基本的な考え方
Naohiro Fujie
Tendances
(20)
gRPC入門
gRPC入門
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
データセンターネットワークの構成について
データセンターネットワークの構成について
golang profiling の基礎
golang profiling の基礎
SPAのルーティングの話
SPAのルーティングの話
はじめようARCore in 札幌
はじめようARCore in 札幌
DynamoDBによるソーシャルゲーム実装 How To
DynamoDBによるソーシャルゲーム実装 How To
Firebase Authを Nuxt + Railsの自前サービス に導入してみた
Firebase Authを Nuxt + Railsの自前サービス に導入してみた
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
個人番号カードと公的個人認証の民間利用について - OpenID Summit 2015
個人番号カードと公的個人認証の民間利用について - OpenID Summit 2015
FIDO2導入してみたを考えてみた
FIDO2導入してみたを考えてみた
Unity WebSocket
Unity WebSocket
TLS, HTTP/2演習
TLS, HTTP/2演習
Keycloakの最近のトピック
Keycloakの最近のトピック
SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)
UnityのMultiplayサービスの得意な事
UnityのMultiplayサービスの得意な事
【Unity道場スペシャル 2017札幌】乱数完全マスター
【Unity道場スペシャル 2017札幌】乱数完全マスター
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
組織におけるアイデンティティ管理の基本的な考え方
組織におけるアイデンティティ管理の基本的な考え方
Plus de Masaki Komagata
漬け水に浸かる
漬け水に浸かる
Masaki Komagata
フィヨルドでのCaster活用事例
フィヨルドでのCaster活用事例
Masaki Komagata
CMS for Cloud by Ruby
CMS for Cloud by Ruby
Masaki Komagata
CMS for Cloud by Ruby
CMS for Cloud by Ruby
Masaki Komagata
PaaS向けCMS Lokka
PaaS向けCMS Lokka
Masaki Komagata
Webデザイナーのための「本当は怖くない」"黒い画面"入門
Webデザイナーのための「本当は怖くない」"黒い画面"入門
Masaki Komagata
What make you
What make you
Masaki Komagata
This is presentation at Mitaka.rb #10.
This is presentation at Mitaka.rb #10.
Masaki Komagata
WordPressに足りないモノ
WordPressに足りないモノ
Masaki Komagata
MSICC
MSICC
Masaki Komagata
Webアプリケーションの国際化
Webアプリケーションの国際化
Masaki Komagata
RESTfullアプリケーションの簡単作成
RESTfullアプリケーションの簡単作成
Masaki Komagata
What is PHP Frameworks?
What is PHP Frameworks?
Masaki Komagata
RDF and FOAF
RDF and FOAF
Masaki Komagata
Plus de Masaki Komagata
(14)
漬け水に浸かる
漬け水に浸かる
フィヨルドでのCaster活用事例
フィヨルドでのCaster活用事例
CMS for Cloud by Ruby
CMS for Cloud by Ruby
CMS for Cloud by Ruby
CMS for Cloud by Ruby
PaaS向けCMS Lokka
PaaS向けCMS Lokka
Webデザイナーのための「本当は怖くない」"黒い画面"入門
Webデザイナーのための「本当は怖くない」"黒い画面"入門
What make you
What make you
This is presentation at Mitaka.rb #10.
This is presentation at Mitaka.rb #10.
WordPressに足りないモノ
WordPressに足りないモノ
MSICC
MSICC
Webアプリケーションの国際化
Webアプリケーションの国際化
RESTfullアプリケーションの簡単作成
RESTfullアプリケーションの簡単作成
What is PHP Frameworks?
What is PHP Frameworks?
RDF and FOAF
RDF and FOAF
WebDAV as Web API
1.
WebDAV
~オープンデータ時代の標準API~ 2007/01/15 ウノウ株式会社 駒形真幸 <komagata@unoh.net>
2.
WebDAVとは? Distributed Authoring
and Versioning ● protocol for the WWW WWW上で編集とバージョン管理が出来る ● プロトコル 1998年にRFC2291で提唱されたHTTP1.1の ● 拡張仕様
3.
主な実装 サーバ ● Apache mod_dav IIS
クライアント ● WindowsのExplorer Mac OS XのFinder LinuxのNautilus Dreamweaver
4.
WebDAVの基本要素
リソース ● WebDAVで扱う対象 (ファイルシステムで言えばファイルやディレクトリ) コレクション ● リソースの集まり(ファイルシステムで言えばディレクトリ) プロパティ ● リソースの属性(名前と値のペア) ロック ● 同時編集を回避する仕組み(共有ロック方式)
5.
HTTP1.1からの拡張点
メソッドの追加 ●
6.
HTTP1.1からの拡張点(2)
ステータスコードの追加 ●
7.
WebDAVのリクエスト PROPFIND /DAV/setup01.jpg HTTP/1.1 Host:
localhost Content-type: text/xml; charset="utf-8" Depth: 0 <?xml version="1.0" encoding="utf-8" ?> <D:propfind xmlns:D="DAV:"> <D:prop xmlns:R="http://localhost/boxschema/"> <R:bigbox/> <R:author/> <R:DingALing/> <R:Random/> </D:prop> </D:propfind>
8.
WebDAVのレスポンス HTTP/1.1 207 Multi-Status Date:
Thu, 18 Jan 2007 02:55:37 GMT Server: Apache/2.2.3 (Debian) DAV/2 PHP/4.4.4-8 Content-Length: 1245 Connection: close Content-Type: text/xml; charset="utf-8" <?xml version="1.0" encoding="utf-8"?> <D:multistatus xmlns:D="DAV:"> <D:response xmlns:ns0="DAV:" xmlns:ns1="urn:schemas-microsoft- com:" xmlns:lp1="DAV:" xmlns:lp 2="http://apache.org/dav/props/"> <D:href>/dav/a.jpg</D:href> (略)
9.
枯れた地味な技術
新しいファイルシステムはもういいよ・・・ ● nfsで良いんじゃ? ● 一昔前の技術? ● 今日びWebDAVて・・・ ●
10.
なぜ今、WebDAVか
良く考えると、WebDAVは ● ファイルシステムじゃなくてWeb APIの仕様 もしかしてスゴイ有望なんじゃ? ●
11.
なぜ今、WebDAVか(2)
様々なデバイスでネットにアクセス ● オープンなAPIよりオープンなデータ ● CGMの流行でネット上のWRITEが増えた ●
12.
なぜ今、WebDAVか(3) 様々なデバイスでネットにアクセス ● → HTTP1.1の拡張仕様
オープンなAPIよりオープンなデータ ● → データ向けのXML語彙 CGMの流行でネット上のWRITEが増えた ● → LOCKなどのWRITE向けの便利な仕様
13.
WebDAV API Web
APIとしてのWebDAV
14.
REST
REpresentational State Transfer ● URIで識別されるリソースの状態の表現をGET, PUTなどの幾つかの動詞によってやりとりするアー キテクチャースタイル HTTPプロトコルの主要著者であるRoy Fieldingが 提唱した。WWWと非常に相性が良い。(WWW自 体RESTの一実装であると言える)
15.
RESTなシステム
Google Web API ● A9.comのOpenSearch ● 汎 用 Blogger API, MetaBlog API 性 ● Atom Publishing Protocol(AtomPP) ● WebDAV!? ●
16.
WebDAV vs AtomPP
Web APIの仕様っていったら ● AtomPPじゃないの? → WebDAVは1999年にRFCになっている。 対してAtomPPは現在IETFで議論中。 現状、実装も圧倒的にWebDAVが多い。
17.
WebDAV vs AtomPP(2)
RESTfulなAtomPPの方がWWWと相性が ● 良いんじゃないの?
18.
Roy FieldingのREST原則
ステートレスなプロトコル(HTTP) ● 全てのリソースに適用可能な操作のセット ● (GET, POST, PUT, DELETEなど) リソースを一意に識別できる汎用的な構文 ● (URI) 情報と状態遷移の両方を扱うことができる ● 「ハイパーメディアの使用」(HTMLやXML)
19.
WebDAVはRESTful
HTTP 1.1の拡張 ● PROPFIND, COPYなど全てのリソースに ● 適用できる汎用のメソッドを持っている URIをベースとしている ● XMLを使ってやり取りしている ●
20.
WebDAV vs AtomPP(3)
本当に普及してるの? ● → Windows, Mac OS X, Linuxで 標準でサポートしている。 実装も圧倒的にWebDAVの方が多い。
21.
WebDAVの利点
実は一番普及しているWeb API ● ファイルシステムを扱うのに十分なメソッドと ● 表現力 詳細なわりに抽象度が高い仕様 ● (ファイルシステム自体の抽象度が高いので 必然的にこうなった)
22.
PHPよるサーバ実装 対応するメソッドを実装するだけで良い require_once 'HTTP/WebDAV/Server.php'; class HTTP_WebDAV_Server_Photozou
extends HTTP_WebDAV_Server { function GET(&$options) { $options['mimetype'] = 'image/jpeg'; $options['mtime'] = xxxxxx; $options['stream'] = fopen($options['path'], 'r'); return true; } function PROPFIND(&$options, &$files) { (略) } } $server = new HTTP_WebDAV_Server_Photozou(); $server->ServeRequest();
23.
Javascriptによるクライアント実装 XHR(Xml Http Request)でWebDAVの拡張メソッドを呼ぶことが出来る var
XHR = function() { return window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); } XHR.open('PROPFIND', 'http://foo.com/pathto, true); headers = headers || {}; headers['Depth'] = headers['Depth']>1 ? 1 : headers['Depth']; headers['Content-Type'] = headers['Content-Type'] || 'text/xml'; for (h in headers) { XHR.setRequestHeader(h, headers[h]); } XHR.send('<?xml version="1.0" ?><propfind xmlns="DAV:"><allprop/></propfind>');
24.
認証 RESTなので既存の様々な認証方法が使えます。
Basic認証 ● PROPFIND /pathto HTTP/1.1 Depth: 1 Authorization: Basic a28tYWdhdGE6dGFrYXNha2k= Digest認証 ● PROPFIND /pathto HTTP/1.1 Depth: 1 WWW-Authenticate: Digest realm="Secret Zone", nonce="RMH1usDrAwA=6dc290ea3304de42a7347e0a94089ff5912c e0de", algorithm=MD5, qop="auth"
25.
認証(2)
WSSE認証 ● PROPFIND /pathto HTTP/1.1 Depth: 1 X-WSSE: UsernameToken Username="komagata", PasswordDigest="ZCNaK2jrXr4+zsCaYK/YLUxImZU=", Nonce="Uh95NQlviNpJQR1MmML+zq6pFxE=", Created="2005-01- 18T03:20:15Z"
26.
WebDAV API応用例
JavaScriptの画像ブラウザ ● フォト蔵をWindowsにマウント ● JS画像ブラウザ at フォト蔵 ● Flashの画像ブラウザ ●
27.
JavaScriptの画像ブラウザ
28.
フォト蔵をWindowsにマウント
29.
JS画像ブラウザ at フォト蔵
30.
JS画像ブラウザ at フォト蔵
31.
Flashの画像ブラウザ
32.
まとめ WebDAVは有望なWeb API