2016-10-25 6 views
1

Which HTTP method should Login and Logout Actions use in a "RESTful" setupの回答で述べたように、RESTfulなWebサービス(たとえば/webservice/login/)のログインにはHTTP POST(=作成)を使用することをおすすめします。 POSTは冪等でも安全でもありません(http://restcookbook.com/HTTP%20Methods/idempotency/)。HTTP RESTfulウェブサービスログアウト:POSTまたはDELETEのどちらが正しいか、より良い方法ですか?

ただし、ログアウト(例:/ webservice/logout /)はどうですか。私はPOSTまたはDELETEを使用しますか?

DELETEは冪等です - サーバー上にセッションが存在するかどうかにかかわらず、削除され、Webサーバーからの回答はそれ以上の内容なしでOKです。これはどういうわけか私には自然な感じです。

POSTは冪等ではなく、同様の質問をしたポスターの中には、POSTをRESTログアウトに推奨しています。そうでない場合は(答えの2種類)

  • ログアウトは、例えば引き起こす可能性 成功答え -

    1. セッションが存在しない場合、サーバーは404を返すことがあります。私は2つの理由を考えることができますユーザ等したがってログアウト操作のため 情報ログアウト含むデータベースの更新が

    を冪等されないようにこれをHTTPメソッドは、ログアウトのために良いだろう - POSTを、または削除しますか?

  • 答えて

    5

    一般に、Webサーバーにはセッションまたはログアウト機能がありません。 RESTサービスはステートレスでなければならず、認証情報はすべてのリクエストとともに送信されます。

    ただし、トークンを使用してユーザーを認証していて、トークンを期限切れにするようサーバーに明示したい場合は、をRESTfulな方法で表現したいと思っています。

    • あなたのトークンがあなたはそれはあなたがのようなURLを持っているように私には意味がありません。そのURL

    DELETEを発行[ID]

  • //セッションのようなURLで表現されていますを削除します。

    「ログアウト」アクションを発行するための情報を含むPOSTリクエストを発行することは、合理的なHTTP API設計アプローチですが、RESTではありません。

  • +0

    URLは私たちのアプリケーションでセッショントークンを使う悪い例でしたが、RESTの原則に従ってHTTP APIを実装すると、DELETEを使うべきだと思います。 – Blackbam

    +0

    はい、これは間違いなく、ここでRESTが提供しているメリットは何ですか? – Evert

    関連する問題