素朴な疑問なのですがREST APIの PUTとかDELETEって必要あるのですか?
例えば、ajaxでgetでサーバー側に削除したい投稿IDを送って、サーバー側でそのIDに紐づく投稿データを削除すれば良いだけではないですか?
DELETEとかPUTの必要性って何なのでしょう?
冪等性があるかどうかの違いです。
AjaxでGETはありえないけど、個人的には冪等性も重要だけど規約的な概念として活用してるかな。実装する側にはRESTに拘ることで明確なメリットがあると思えないかもしれないし、色々検証してみたけどコスト的なものも変わらなかったけど、アプリ用のAPI仕様を固める時は規約があり冪等性があると保守性が高くなるから一標準的なものを作る。何だかんだでメリットは大きい。
え、ajaxでgetで削除対象のid送ってサーバー側で削除はダメなのですか?postで送るならオッケーとかですか?
敢えてGETというリクエストのどこから飛んできてもおかしくない方法で晒す必要はないかと思うし、XSRF用のトークンも送りにくい上、高負荷かけて落としたりセキュリティリスクがあるやり方で作る必要ないよね。酷い場合botが回ってきて削除されたりとかありそう。標準的なDELETEリクエストをそこまでして使いたくない理由がわからないけどPOSTで正しく処理すればオッケー。
postで対応すれば安全なのですね!GETでやってました。。。deleteってブラウザーが対応してないとか何とか聞いたもので。
postで正しく処理とあるのですが、何か特別なことをajaxでのpostの場合、しないといけないですか?普通のpostを処理するようなことをやっておけば大丈夫ですか?
xsrfをググってみたのですが、これはクロスオリジン制約があるから、外部からのリクエストは自動でブロックされることにはならないのですか?
じゃあ、外部公開apiはどうなるんだという話ではないか
あ、確かに。外部公開しないAPIを前提としていました!外部公開のAPIであればクロスオリジン制約無しですもんね。そういう場合はxsrf対策を行わないといけないのですね。
ここで質問する前にまず、通信技術について何一つ学んでないような…。HTTPについてやセキュリティについて一度やった方がいいよ。情報漏えいしたら過失じゃ済まないんだから。
HTTPサーバーは勉強がてらに簡易的なものは作成したことはあります。セキュリティーは徳丸本は持ってるのですが、内容が難しくて積み読状態になっておりました。今読めば前よりは理解できるかな。。。
みんなの回答 2 件
冪等性があるかどうかの違いです。
AjaxでGETはありえないけど、個人的には冪等性も重要だけど規約的な概念として活用してるかな。
実装する側にはRESTに拘ることで明確なメリットがあると思えないかもしれないし、色々検証してみたけどコスト的なものも変わらなかったけど、アプリ用のAPI仕様を固める時は規約があり冪等性があると保守性が高くなるから一標準的なものを作る。何だかんだでメリットは大きい。
関連するトピックス