LoginSignup
4
2

More than 5 years have passed since last update.

Go Web Examplesの和訳(Hello World)

Last updated at Posted at 2018-09-04

Go勉強会 Webアプリケーション編 #1で使おうと思っているGo Web Examplesの和訳です。ほぼGoogle翻訳ですが、リンク等も整理された状態であると便利だと思い作りました。次回(HTTP Server)

はじめに

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

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

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

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

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

  1. text/htmlレスポンスを書き込むhttp.ResponseWriter
  2. このHTTPリクエストに関するすべての情報(URLやヘッダーフィールドなど)を含む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接続をリッスンする

リッスンとは(引用元: e-words: リッスン

TCP/IPの通信ができるOS上で動作しているプログラムが、特定のポート番号への接続を待ち受けること

リクエストハンドラだけでは、外部からのHTTP接続を受け入れることはできません。 HTTPサーバーは、リクエストハンドラに接続を渡すためにポートで待機する必要があります。 ほとんどの場合、ポート80番はHTTPトラフィックのデフォルトポートなので、このサーバーはHTTPトラフィックもリッスンします。 次のコードは、GoのデフォルトのHTTPサーバーを起動し、ポート80番で接続を待ち受けます。ブラウザでhttp://localhostに移動して、サーバーがリクエストを処理するのを見てください。

http.ListenAndServe(":80", nil)

コード (コピペ用)

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

server.go
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)
    })

    err := http.ListenAndServe(":80", nil)
    fmt.Print(err)
}

動作確認

$ sudo go run server.go &
$ curl localhost:80/hello
Hello, you've requested: /hello

次回(HTTP Server)

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2