Twitterや掲示板などで、新しく投稿する時、投稿した内容を更新する時に、POSTやPATCHというHTTPメソッドが働いています。 この内容を勉強したので、アウトプットします。
POSTとPATCHを確認。
今回は、掲示板に投稿、投稿した内容を更新していきます。
掲示板を投稿する画面にいき、検証ツールで、formの中身を見てみましょう。
<form action="/posts" accept-charset="UFT-8" method="post">
続いて投稿内容を更新する画面にいき、検証ツールで見ていきます。
<form action="/posts/:id" accept-charser="UFT-8" method="post"> <input type="hidden" name="_method" value="patch">
新規投稿formにはpost、更新ページにはpathというHTTPメソッドがついていることが分かります。
POSTとPATCHの違い
POST
掲示板に投稿する時、POSTによってcreateアクションに繋がり、リソースに対する子リソースが作成されます。
PATCH
掲示板の投稿画面一覧から、特定の掲示板を選択し、その掲示板の内容を更新するページに遷移したとします。 その時にPATCHによってupdateアクションに繋がり、リソースの内容を更新してくれます。
べき等性
べき等性とは、ある操作を何回行っても結果が同じことを意味する数学用語です。
POSTはべき等性がなく、PATCHにはべき等性があります。これを例を交えて説明します。
PATCHの場合
掲示板の投稿内容を書き換えて更新したが、通信エラーがおこり、クライアントがレスポンス(200 OK)を確認できなかったとします。 その時は、再び同じリクエストを送信できます。
HTTP/1.1 200 OK
今度は200 OKを確認できました。ここで同じPATCHを2回送信しましたが、結果は1回目と2回目共に同じですよね! これをべき等性があるといいます。
POSTの場合
ユーザー登録をした時など、DBに新規ユーザーを作成していきます。この時、1度目の結果と2度目の結果では、ユーザー数に違いが出てくるので、べき等性がありません。
ショッピングサイトなどで戻るボタンを操作した時に、もう一度送信しますか?というメッセージが出てくることがあります。 これはPOSTを再送信しようとしている場合で、再送信してしまうと、二重注文になる恐れがあるので注意してください。