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で欠落しているデフォルトの電源プランを復元する方法

Windows 10で欠落しているデフォルトの電源プランを復元する方法

このガイドでは、Windows 10でデフォルトの電源プラン(バランス、高パフォーマンス、省電力)を復元する方法を詳しく解説します。

Windows 10 で BlueStacks 5 の仮想化 (VT) を有効にする方法

Windows 10 で BlueStacks 5 の仮想化 (VT) を有効にする方法

仮想化を有効にするには、まず BIOS に移動し、BIOS 設定内から仮想化を有効にする必要があります。仮想化を使用することで、BlueStacks 5 のパフォーマンスが大幅に向上します。

WiFi接続に接続する際のドライバーの切断を修正

WiFi接続に接続する際のドライバーの切断を修正

WiFi 接続に接続するときにドライバーが切断されるエラーを修正する方法を解説します。

Windows での DIR コマンドの使用方法

Windows での DIR コマンドの使用方法

DIR コマンドは、特定のフォルダーに含まれるすべてのファイルとサブフォルダーを一覧表示する強力なコマンド プロンプト コマンドです。 Windows での DIR コマンドの使用方法を詳しく見てみましょう。

ソフトウェアを使わずに Windows 10 アプリをバックアップおよび復元する方法

ソフトウェアを使わずに Windows 10 アプリをバックアップおよび復元する方法

ソフトウェアなしで Windows 10 アプリをバックアップし、データを保護する方法を説明します。

Windows でローカル グループ ポリシー エディターを開くための 11 のヒント

Windows でローカル グループ ポリシー エディターを開くための 11 のヒント

Windows のローカル グループ ポリシー エディターを使用して、通知履歴の削除やアカウントロックの設定を行う方法を説明します。

最高の IP 監視ツール 10 選

最高の IP 監視ツール 10 選

重要なリソースを簡単に監視及び管理できる<strong>IP監視</strong>ソフトウェアがあります。これらのツールは、ネットワーク、インターフェイス、アプリケーションのトラフィックをシームレスに確認、分析、管理します。

AxCrypt ソフトウェアを使用してデータを暗号化する方法

AxCrypt ソフトウェアを使用してデータを暗号化する方法

AxCrypt は、データの暗号化に特化した優れたソフトウェアであり、特にデータ セキュリティに優れています。

Windows 10 Creators Updateのアップデート後にシステムフォントを変更する方法

Windows 10 Creators Updateのアップデート後にシステムフォントを変更する方法

システムフォントのサイズを変更する方法は、Windows 10のユーザーにとって非常に便利です。

Windows 10で機内モードをオフにできないエラーを修正する方法

Windows 10で機内モードをオフにできないエラーを修正する方法

最近、Windows 10にアップデートした後、機内モードをオフにできない問題について多くのユーザーから苦情が寄せられています。この記事では、Windows 10で機内モードをオフにできない問題を解決する方法を説明します。