Go を使用して基本的な Web サーバーを構築する方法

Go を使用して基本的な Web サーバーを構築する方法

Go は、最新の Web アプリケーションやシステム ソフトウェアを構築するための興味深いプログラミング言語です。リリース後大きな話題を呼び、Docker、Kubernetes、Terraform、Dropbox、Netflixなどのサービスを強化しました。

さらに、Go には組み込みパッケージの堅牢なコレクションがあるため、Web プログラミングに最適です。この記事では、Go で基本的なWeb サーバーを作成する方法を説明します。

必要なパッケージをインポートする

net/HTTP パッケージは、Web サーバーとクライアントの作成に必要なものをすべて提供します。このパッケージには、Web プログラミングを処理するための便利な関数がいくつか含まれています。

ソース コードの先頭に以下の行を追加することでインポートできます。

import "net/http"

この記事では、fmtパッケージを使用して文字列をフォーマットし、logパッケージを使用してエラーを処理します。上記のように個別にインポートすることも、単一の import ステートメントを使用してすべてのパッケージをインポートすることもできます。

import (
"fmt"
"log"
"net/http"
)

必要なパッケージをインポートした後、main 関数の作成に進むことができます。ソース ファイルを.go拡張子を付けて保存してください。Vim を使用している場合は、以下のコマンドを使用して Vim を保存して終了します。

:wq server.go

main関数を書く

Go プログラムは、「main」という適切な名前が付けられた main 関数内に直接存在します。ここでサーバー呼び出しを行う必要があります。次の行をソース コードに追加して、その動作を確認してください。

func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}

この例では、 funcキーワードを使用して main 関数を定義しています。 Go には開始中括弧の位置に関する厳密な規則があるため、開始中括弧が正しい行上にあることを確認してください。 main の最初のステートメントは、ルート パス ( "/" ) へのすべての Web リクエストがhttp.HandlerFunc型の関数であるインデックスによって処理されることを定義します。

2 行目では、http.ListenAndServe関数を介して Web サーバーを起動します。これは、サーバーのポート 8080 で受信 HTTP リクエストを継続的にリッスンするようサーバーに信号を送ります。この関数の 2 番目のパラメーターは、プログラムを最後までブロックするために必要です。

http.ListenAndServe は常にエラーを返すため、この例ではこの呼び出しをlog.Fatal呼び出し内にラップします。このステートメントは、サーバー側で生成されたエラー メッセージをログに記録します。

処理機能の実装

ご覧のとおり、main 関数はハンドラー関数インデックスを呼び出してクライアント要求を処理します。ただし、この例では、サーバーに対してこの機能がまだ定義されていません。

インデックス関数を使用できるようにするために必要なステートメントを追加しましょう。

func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}

この関数は、タイプhttp.ResponseWriterおよびhttp.Requestの 2 つの異なる引数を受け取ります。http.ResponseWriterパラメータには、受信リクエストに対するサーバーの応答がhttp.Requestオブジェクトの形式で含まれます。

fmtパッケージの関数Fprintf は、テキスト文字列の表示と操作に使用されます。この記事では、これを使用して Web リクエストに対するサーバーの応答を表示しています。最後に、r.URL.Path[1:]要素を使用して、ルート パスの後のデータをフェッチします。

残りのパーツをすべて追加します

残りのコンポーネントをすべて追加すると、Go Web サーバーの準備が整います。コードは次のようになります。

import (
"fmt"
"log"
"net/http"
)
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}

最初の行は、この Go Web サーバー コードを実行可能ファイルとしてコンパイルするために必要です。

Go を使用して基本的な Web サーバーを構築する方法

この Go Web サーバー コードを実行可能ファイルとしてコンパイルします。


Windows 10 の天気アプリで温度を °C または °F で表示する方法

Windows 10 の天気アプリで温度を °C または °F で表示する方法

天気予報は、世界中どこからでも好きな都市や場所を表示し、気温を摂氏 (°C) で表示するように簡単に設定できます。この設定は、Windows 10 の天気アプリとタスクバーの「ニュースと興味」ウィジェットで調整できます。

ハッキング スキルを学ぶのに最適な Web サイト

ハッキング スキルを学ぶのに最適な Web サイト

ハッカーというと、おそらく私たちが最初に想像するステレオタイプは、大学生かコンピューター サイエンスの分野の専門家ではないでしょうか。

Windows 10 で Hyper-V チェックポイントを作成および使用する方法

Windows 10 で Hyper-V チェックポイントを作成および使用する方法

チェックポイントは、仮想マシン上の変更を簡単に元に戻すことができる Hyper-V の強力な機能です。

Windows PCでDMGファイル拡張子を無料で読み取る3つのツール

Windows PCでDMGファイル拡張子を無料で読み取る3つのツール

DMG イメージ ファイル形式は、Mac OS X でソフトウェアを配布するために使用される最も一般的なファイル ストレージ形式です。このファイル拡張子は、Windows PC コンピュータでは読み取ることができません。ただし、このファイル拡張子を Windows PC で読み取りたい場合は、サードパーティ アプリケーションのサポートを求めることができます。

99+ グッチの壁紙、美しいグッチの壁紙をダウンロード

99+ グッチの壁紙、美しいグッチの壁紙をダウンロード

以下のグッチの壁紙があなたのコンピュータの壁紙や携帯電話の壁紙に適しているかどうかを見てみましょう。

Windows 10 のファイル エクスプローラーのナビゲーション ウィンドウでクイック アクセスを追加/削除する方法

Windows 10 のファイル エクスプローラーのナビゲーション ウィンドウでクイック アクセスを追加/削除する方法

クイック アクセスは、作業中のファイルや頻繁に使用するフォルダーへの最短ルートです。これらは、頻繁にアクセスするフォルダーと最近使用したファイルです。

Opera VPN レビュー: シンプル、高速、無料

Opera VPN レビュー: シンプル、高速、無料

Opera Web ブラウザには無料の VPN が付属しているということを聞いたことがあるかもしれません。あるいは、すでに Opera の愛好家で、VPN サービスがどのように機能するのか知りたいだけかもしれません。

2.4GHz Wi-Fi ネットワークを無効にする必要があるのはなぜですか?

2.4GHz Wi-Fi ネットワークを無効にする必要があるのはなぜですか?

ホーム Wi-Fi ネットワークの古い 2.4 GHz 帯域をオフにして、より高速で「混雑の少ない」新しい 5 GHz 帯域を使用することを検討する必要があります。次の記事で調べてみましょう。

Windows Defenderでサンドボックス機能を有効にする方法

Windows Defenderでサンドボックス機能を有効にする方法

Microsoft Windows Defender の統合ウイルス対策エンジンは、サンドボックス環境で実行できる最初のウイルス対策ソフトウェアになりました。

スクリーン ロッカー ランサムウェアとは何ですか?削除方法は?

スクリーン ロッカー ランサムウェアとは何ですか?削除方法は?

Screen Locker Ransomware は、画面を乗っ取り、デバイスの使用を妨げる一種のランサムウェアです。このタイプのランサムウェアは増加傾向にあり、それに関する十分な情報がなければ削除するのが非常に困難になる可能性があります。