私は Web アプリを設計していたのですが、RESTful Web サービスとして API をどのように設計すべきか考えるために立ち止まりました。今のところ、私の URI のほとんどは汎用的で、さまざまな Web アプリに適用できる可能性があります。
GET /logout // destroys session and redirects to /
GET /login // gets the webpage that has the login form
POST /login // authenticates credentials against database and either redirects home with a new session or redirects back to /login
GET /register // gets the webpage that has the registration form
POST /register // records the entered information into database as a new /user/xxx
GET /user/xxx // gets and renders current user data in a profile view
POST /user/xxx // updates new information about user
SO と Google でいろいろ調べてみた結果、自分がかなり間違ったことをしているような気がします。
から始めますが/logout
、おそらく私は本当に何も知らないので、を要求し、セッションを破棄してからリダイレクトするGET
方が適切かもしれません。 という用語はそのままにしておくべきでしょうか?POST
/logout
GET
/logout
/login
とについてはどうでしょうか。を に/register
変更することもできますが、より深刻な問題がある場合、それによってサービスの基本的な動作が変わることはありません。/register
/registration
私は/user
リソースを公開していないことに気付きました。おそらく、それを何らかの方法で利用できるかもしれません。たとえば、ユーザーを例に挙げますmyUser
。
foo.com/user/myUser
または
foo.com/user
エンド ユーザーは、URI に余分な冗長性を必要としません。しかし、視覚的に魅力的なのはどちらでしょうか?
SO でこの REST ビジネスに関する他の質問がいくつかあることに気付きましたが、可能であれば、ここで説明した内容について何らかのアドバイスをいただければ幸いです。
ありがとう!
アップデート:
以下の点についてもご意見を伺いたいです。
/user/1
対
/user/myUserName
ベストアンサー1
RESTfulはURL構築のガイドラインとして使用でき、セッションそしてユーザーリソース:
GET /session/new
ログインフォームのあるウェブページを取得しますPOST /session
データベースに対して資格情報を認証するDELETE /session
セッションを破棄し、/ にリダイレクトしますGET /users/new
登録フォームのあるウェブページを取得しますPOST /users
入力された情報を新しい/user/xxxとしてデータベースに記録しますGET /users/xxx
// 現在のユーザーデータを取得してプロフィールビューに表示しますPOST /users/xxx
// ユーザーに関する新しい情報を更新します
これらは複数形または単数形にすることができます (どちらが正しいかはわかりません)。私は通常、/users
ユーザー インデックス ページ (予想どおり) や、/sessions
ログインしているユーザーを確認する (予想どおり) ために使用しています。
URL で数字ではなく名前を使用するのは/users/43
、/users/joe
通常、技術的な要件ではなく、ユーザーや検索エンジンに対してよりフレンドリーにしたいという願望によるものです。どちらでも構いませんが、一貫性を保つことをお勧めします。
登録/ログイン/ログアウト または を使用するとsign(in|up|out)
、RESTful の用語ではうまく機能しないと思います。