岩本隆史の日記帳(アーカイブ)

はてなダイアリーのサービス終了をうけて移行したものです。更新はしません。

REST

Re: RESTとCSRF

ご無沙汰しております。artonさんの「RESTとCSRF」を読んで僕なりに考えたことを書きます。お題: 所定の遷移に従っていないクライアントには破壊的な操作をさせたくない 破壊許可識別子をリクエストボディに含めたくない artonさんの解は下記の通り「破壊許…

『Webを支える技術』第3部と第4部を読んだ

前回の日記の続きです。『Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)』の第3部と第4部を読みました。以下、特に勉強になった点などのメモです。 第3部 HTTP リソースの作成はPUTよりPOSTが望ましい。PUTはサーバとの結合が密になる…

『Webを支える技術』第1部と第2部を読んだ

昨日の日記の続きです。『Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)』の第1部と第2部を読みました。 第1部 Web概論 「第2章 Webの歴史」が知らないことばかりで面白かった。個人的に興味深かったのは、SOAP対RESTの論争に火を付け…

『Webを支える技術』を買った

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)作者: 山本陽平出版社/メーカー: 技術評論社発売日: 2010/04/08メディア: 単行本(ソフトカバー)購入: 143人 クリック: 4,320回この商品を含むブログ (183件) を見る我慢できない子なので…

なぜステートレス性が重要でないのか

いわゆる「文字エンコーディング問題」は、セキュリティ専門家の間でも意見が分かれているようなので、そちらにおまかせします。今回は、RESTについて久々に考えてみます。日本Ruby会議2008で、山本陽平さんが「REST信者から見たRuby on Rails 2.0」と題した…

POSTリクエストをリダイレクトしたい状況とその対応

Webアプリケーションを作成する際には,POSTのリクエストをリダイレクトして,そのまま別のURLにPOSTさせるということはできないと思っておいたほうが良さそうですね. POSTリクエストをリダイレクトするとGETされる?POSTされる? - はこべにっき ♨ HTTP/1.1…

私が RESTful API の後方互換性を気にするケース

前回の記事「RESTクライアントが知っているべきこと」に、id:nsiena さんからトラックバックをいただきました。 RESTful API の後方互換性 - Siena.の日記 斜め上の応答になってしまうかもしれませんが、思ったことを書いてみます。 API変更の性格分類とサー…

RESTクライアントが知っているべきこと

クライアントとサーバの密結合を避けられるのが、RESTスタイルに従って得られるメリットのひとつです。クライアントが、アプリケーションの挙動に関する知識をほとんど持たなくてよいわけです。とはいっても、まったく何も知らないではクライアントたりえま…

WADLは必要か・最終回

「WADLは必要か・その1」「WADLは必要か・その2」の続きです。 WADL文書を公開するのはクライアントにフォームを作らせたいから 前回は、私の思いついたWADL文書の使い方を例示しました。クライアントによるフォームの動的生成を期待して、リソースへのリク…

WADLは必要か・その2

「WADLは必要か・その1」の続きです。 フォームをクライアントに作らせたい 一般的なWebアプリケーションでは、サーバがフォームを作ります。form要素の含まれたHTMLをクライアントに返すわけです。しかし、「サーバサイドでSmalltalkのMVCパターンを使うの…

WADLは必要か・その1

識者の間でも結論は出ていない RESTfulなWebサービスのための仕様記述言語・WADL(Web Application Description Language)の必要性については、識者の間でも意見が分かれています。Leonard Richardson(『RESTful Webサービス』の著者の一人)は必要派(「I…

続・コマンド的な処理をどうやってRESTfulに実装するか

「コマンド的な処理をどうやってRESTfulに実装するか」に書いた内容を敷衍します。 SunのクラウドサービスAPI 先日、Sun MicrosystemsがSun Cloudというクラウドサービスを提供すると発表しました。 米Sun、Amazon対抗のクラウドサービス「Sun Cloud」を発表…

コマンド的な処理をどうやってRESTfulに実装するか

ongoing by Tim Bray · RESTful Casuistry この記事でTim Brayが例に挙げているサーバリブート処理をRESTfulに実装するとすれば: POSTでリブート要求トランザクションリソースを作る PUTでサーバステートをdownに更新、その後upに更新する の2通りが思いつ…

フォーム認証を捨てるメリット

先日の記事「フォーム認証は本当に捨てられないのか」の続きです。 「WebサービスとWebアプリケーションを区別しないとうまくいく」という指針 RESTに関する下記の鼎談動画において「WebサービスとWebアプリケーションを区別しないとうまくいく」という指針…

RESTful読書会の第6回勉強会に参加した

http://kunit.jp/restful/wiki/index.php?%C2%E86%B2%F3%CA%D9%B6%AF%B2%F1 経緯を知らない方にはなんのこっちゃなタイトルになってしまいましたが、もともと『RESTful Webサービス』という本の読書会だったのが、おいしい部分は読み終えたため、Webアプリケ…

非同期処理メインのWebアプリについて考えた

先日「非同期にしたいけれど」という記事を書いてからずっと、非同期処理メインのWebアプリについて考えています。実装したわけではないため、まだ机上の空論にすぎませんが、方向性が見えてきたので備忘録として残しておきます。 前提条件 Create/Update/De…

第5回RESTful本読書会に参加した

http://kunit.jp/restful/wiki/index.php?%C2%E85%B2%F3%C6%C9%BD%F1%B2%F1 読みどころは全部読んだとの判断により、本を読むのはやめて、AtomPubについてあれこれ話すパートからスタート。はてなダイアリーAtomPubを肴に、「X-HATENA-PUBLISH ってどうよ?…

なるほどRESTUnitかー

id:yoheiさんのブクマ経由で知りました。 ongoing by Tim Bray · Testing REST 「RESTfulなWebアプリ、BDDで作りたいじゃんね。テスティングフレームワークぐらいあると思ったら、あれ?」という話。私がPintoBeansでやろうとしていること(全然できてないけ…

第4回RESTful本読書会に参加した

http://kunit.jp/restful/wiki/index.php?%C2%E84%B2%F3%C6%C9%BD%F1%B2%F1 OpenSocialの概要と、URI Template(Templatesだと思ってた)の仕様の変遷を知ることができ、勉強になりました。関係者の皆様、ありがとうございました!「あれ?」と思ったあなた…

Pinto公開に向けて #2 ― ユーザ登録周りのURIを考えた

あらすじ Pintoというソーシャルブックマークサービスを作ろうとしています。ソーシャルというぐらいなので、ユーザ登録処理の実装が必要です。『RESTful Webサービス』で提唱されているROAの流儀に従い、ユーザ登録処理に必要なリソースとそのURIを決めてい…

第3回RESTful本読書会に参加した

第1回から参加していますが、今回が一番濃かったかも(特に懇親会が)。 http://kunit.jp/restful/wiki/index.php?%C2%E83%B2%F3%C6%C9%BD%F1%B2%F1 感想というか、色々思うところがあったのでメモ。 ブックマークリソースのURI問題 「7.3.3 ブックマークコ…

WebアプリとWebサービスは違うことにようやく気づいた

『RESTful Webサービス』の第3回読書会に参加するため、6〜8章を読み返しています。構想中のWebアプリの認証周りについて考えていたところで、読むのにちょうど良いタイミングでした。まだ全部を読みきってはいませんが、「6.1.1 ユーザーアカウントはなぜリ…

RESTfulなWebアプリのCSRF対策について考える

『安全なウェブサイトの作り方 改訂第3版』(PDF)によれば、CSRF脆弱性の根本的解決策は下記の3つしかありません。 処理を実行するページを POST メソッドでアクセスするようにし、その「hidden パラメータ」に秘密情報が挿入されるよう、前のページを自動…

続・多言語リソースのURIに関する覚書

昨日の日記の最後にこう書きました。 正規URIに対してリクエストがあった場合、サーバは英語とスペイン語、どちらでレスポンスを表現するか決めなければなりません。Accept-Language ヘッダを見てもよいのでしょうが、それだとコンテントネゴシエーション方…

多言語リソースのURIに関する覚書

『RESTful Webサービス』の「4.6.1 表現の選択」に「プレスリリースが英語とスペイン語の両方で提供されている場合」への言及があります。著者が推奨するのは、各言語用に個別のURIを割り当てる方法です。 http://www.example.com/releases/104.en http://ww…

「303 See Also」じゃなくて「303 See Other」

『RESTful Webサービス』の初版第2刷88ページに「303(See Also)」と書かれていますが、これは「303(See Other)」の誤記ですね。先日の読書会で使った資料にもそう書いてしまっていたので修正しました。なお、私の発表音声がまとめページよりダウンロードでき…

第2回RESTful本読書会に参加した

http://kunit.jp/restful/wiki/index.php?%C2%E82%B2%F3%C6%C9%BD%F1%B2%F1 調子にのって4章の発表を担当したわけですが、資料のレイアウトが崩れたり、生来のあがり症のためにしどろもどろになったり、お見苦しいお聞き苦しい点が多々あったと思います。あ…

ROAに準拠できない(しづらい)シチュエーションを列挙してみる

ROAに準拠したWebアプリを作りたいのに、準拠できない or 準拠しづらいシチュエーションってありますよね? 私はあります。それを列挙してみようという試みです。なお、「ROAに準拠している=ROAの4つの特性を満たしている」という等式を前提とします。これ…

ROAには飛躍がある

昨日のメールに続き、Roy T. Fieldingの投稿があった。In any case, there are plenty of RESTful services that do nothing but GET and POST. The key is how those methods are used, not what methods are used. To give a specific example, what makes…

Roy T. Fieldingいわく「RESTは単なるファイルストレージじゃない」

RESTのメーリングリストより。 rest-discuss : Message: REST is not just file storage 「みんなCRUDにこだわりすぎ」というRoyのいらだちが感じられる。先日のRESTful本読書会で、私は: 30個の項目があって、そのうちの2個を消したくなったら、REST厨的に…