Hello World

こんにちは、Philippです!
私のプラットフォームであるGo Web Examples Coursesが公開されたことをお知らせします。GoでのWeb開発に関する分かりやすいビデオコースをお楽しみください。早期サポーター向けの特別オファーをぜひチェックしてください。
そちらでお会いしましょう! :)
詳細はこちら

はじめに

Goはバッテリー込みのプログラミング言語であり、Webサーバーがすでに組み込まれています。標準ライブラリのnet/httpパッケージには、HTTPプロトコルに関するすべての機能が含まれています。これには、(他にも多くのものがありますが)HTTPクライアントとHTTPサーバーが含まれます。この例では、ブラウザで表示できるWebサーバーを作成するのがいかに簡単かを知ることができます。

リクエストハンドラの登録

まず、ブラウザ、HTTPクライアント、またはAPIリクエストからのすべての受信HTTP接続を受け取るハンドラを作成します。Goのハンドラはこのシグネチャを持つ関数です。

func (w http.ResponseWriter, r *http.Request)

関数は2つのパラメータを受け取ります

  1. text/htmlレスポンスを書き込むhttp.ResponseWriterです。
  2. URLやヘッダーフィールドなどのこのHTTPリクエストに関するすべての情報を含むhttp.Requestです。

デフォルトのHTTPサーバーにリクエストハンドラを登録するのは、これと同じくらい簡単です。

http.HandleFunc("/", func (w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, you've requested: %s\n", r.URL.Path)
})

HTTP接続を待機する

リクエストハンドラだけでは、外部からのHTTP接続を受け入れることはできません。HTTPサーバーは、リクエストハンドラに接続を渡すためにポートでリッスンする必要があります。ポート80はほとんどの場合HTTPトラフィックのデフォルトポートであるため、このサーバーもポート80でリッスンします。

次のコードは、GoのデフォルトHTTPサーバーを起動し、ポート80で接続を待機します。ブラウザでhttp://localhost/に移動すると、サーバーがリクエストを処理していることがわかります。

http.ListenAndServe(":80", nil)

コード (コピー/ペースト用)

これは、この例で学んだことを試すために使用できる完全なコードです。

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello, you've requested: %s\n", r.URL.Path)
    })

    http.ListenAndServe(":80", nil)
}