技術向上

プログラミングの学び、気になるテクノロジーやビジネストレンドを発信

2018-12-30から1日間の記事一覧

Redirects【Go】

Go

http.Redirect() 303、307の例をお見せします。 記述内容が異なるのは、http.Redirect()の第4引数のみです。 templateであるindex.gohtmlです。 formのaction属性に「/bar」を指定します。 <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form method="POST" action="/bar"> <input type="text" name="fname"> </form></body></html>

HTTP Status Code 307

使用ケース 307 Temporary Redirectは、リクエストされたリソースが一時的に異なるURLに移動されたことを意味します。 元のリクエストメソッドがそのまま移動先へのリクエストメソッドとなります。 したがって、301や303と違い、POSTがGETに変更されることは…

HTTP Status Code 303

使用ケース 303 See Otherは一般的に、PUTやPOSTの結果として返されるステータスコードです。 例えば掲示板などでPOST送信した後に再び書き込み一覧を表示してしまうと、その画面を再読み込みした場合に、再度同じPOSTを送信できてしまいます。 これを防ぐた…

HTTP Status Code 301

使用ケース 301 Moved Permanentlyは、恒久的にURLが移転された際、その新しいURLへのリダイレクトとして使用されます。 サイトが全く異なるURLに移転したケースはもちろん、SSL化してhttpからhttpsに変更された際にも使用します。 また、SEOの観点からURLを…

case: 巨大なクラス【リファクタリング】

1つのクラスがあまりに多くの仕事をこなしている場合は、大抵、インスタンス変数の持ちすぎになっています。 インスタンス変数が多すぎると、重複したコードが生まれやすくもなります。 まず「クラスの抽出」を適用して、いくつかの変数をまとめます。ポイン…

インターフェースの抽出【リファクタリング】

状況 複数のクライアントが、あるクラスの一部の機能を使っている 対処 共通部分をインターフェースとして抽出する メリット 各クライアント(関数など)がどの機能を必要としているのかが明確になる 別の機能を持たせた異なる種類のクライアントを作成する…