Hatena::ブログ(Diary)

130単位

2012-08-21

RailsにおけるRESTfulなURL設計勉強会 vol.2 メモ #sendagayarb

vol.1に続いて参加してきました。そのメモです。

複数レコードを選択して更新するUI

  • 207 Multi-Status を使わないようにがんばりたい
    • 207のレスポンスの中身は設計者任せとされている
  • 項目(トラフィック)が少なければ個別のアクセスもあり
    • Ajaxで複数回リクエストするのはリソース設計の統一感がある
  • 処理を集約したトランザクションリソースを新たにつくる

ステータスコード

  • 参考:no title
  • 一部成功時、200を返すのもOK
  • リソース更新失敗は422 Unprocessable Entity がRailsデフォルト
    • デフォルトに従うのは楽だしその判断もあり
    • しかし表現できるなら表現したほうがいい
  • Uniquenessのバリデーション失敗時は 409 Conflict を返したほうがいい

APIのバージョニング

  • APIはバージョニング前提で組んでしまってもいい
  • (バージョンの)処理判断の優先度はURL->リクエストヘッダ->どちらもなければ自由に
  • 理想は、APIアプリ本体は同じURLがのぞましい
  • URL設計はAPI的な立場から考えたほうがいい
  • no title
    • API作成に特化したライブラリ
    • APIのみRailsにマウントもできる
    • stable版のドキュメントはmasterのREADMEとは別なので注意

Legacy Routesはなぜ非推奨か

  • 更新系アクションにGETでアクセスできてしまうのが問題
    • Firefoxの一覧リンク先読みで全部削除された話
  • URLを変わりにくくするためにはメソッドを出さないほうがいい

確認画面

  • confirmationをリソースとみなす
  • ただし resource :confirmation は扱いづらいため単にmember/collectionでメソッドを追加する

ウィザード(ステップ型)画面

その他

  • WebDAV
    • httpの中でファイルアクセスするような仕組み
    • Subversionが使っている
  • routes.rbのデフォルトコメント
    • 残す派…書き方忘れることがあるので残す、単にデフォルトのものは残す
    • 消す派…バージョン管理されるため不要なものは消す
  • リソース設計とDB設計は別
  • リソースとして抽出するかどうかはアプリ内での重要度にもよる

追加の疑問

メモをまとめていて疑問に思ったことです。

  • 207を使う場合のリソースおよびレスポンスの具体例が知りたい
  • 確認画面の話はこういうことだろうか
resources :entry do
  post :confirmation, action: :confirm, on: :collection
  post :confirmation, action: :confirm, on: :member
end

感想

正直ステータスコードのあたりは言葉の意味がわからないことがあり、勉強不足を痛感じました。そんな自分の疑問も取り上げてくださった千駄ヶ谷.rbの懐の広さ、感謝です。それにしても、「これが正解」とはいいきれないトピックが多々あるRESTリソース設計、奥が深いなーと思いました。また機会があれば、これまでの内容の整理および周辺知識の学習をした上で臨みたいです。ありがとうございました!

あわせて

関連記事

PR

ギークハウス元住吉は入居者を募集しています。毎週末にハッカソン*1も開催しています。ご興味ある方はTwitterなどでお気軽にお問い合わせください!

*1:集まってもくもく開発とかする会

2012-08-08

iTerm2のVimでトラックパッド範囲選択コピーする

ゆるいVimmerなので、たまにトラックパッドからカーソル選択でコピーすることがあります。Terminal.appではCmd+Cでできてたのですが、iTerm2に変えたらできなくなって若干困ってました。ビジュアルモードで選択した扱いになってしまいます。そこで、設定により通常選択を可能にする方法です。

  • Preferences > Profiles > Terminal > Terminal Emulation
    • Enable xterm mouse reporting を OFF

f:id:deeeki:20120808233357p:image

ググってもなかなかヒットしませんでしたが、以下のページに書いてありました。

またiTerm2の機能により、Cmd+Cしなくても選択しただけでクリップボードにコピーされます。ちなみに上記設定ONの状態だと、Optionキーを押しながらカーソル選択する必要があるみたいです。