6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Go Web Examplesの和訳(HTTP Server)

Last updated at Posted at 2018-09-05

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

はじめに

この例では、Goで基本的なHTTPサーバーを作成する方法を学習します。最初に、HTTPサーバーの機能について説明しましょう。基本的なHTTPサーバーには、いくつかの重要な仕事があります。

  • 動的なリクエストの処理:ウェブサイトを閲覧したり、アカウントにログインしたり、画像を投稿したりするユーザーからの受信リクエストを処理します。

  • 静的なアセットの配信:JavaScript、CSS、および画像をブラウザに配信して、ユーザーにダイナミックなエクスペリエンスを提供します。

  • 接続を受け入れる:インターネットからの接続を受け入れるには、HTTPサーバーが特定のポートで待機する必要があります。

動的なリクエストを処理する

net / httpパッケージには、リクエストを受け入れて動的に処理するために必要なすべてのユーティリティが含まれています。 http.HandleFunc関数で新しいハンドラを登録することができます。最初のパラメータは、一致するパス、2番目に実行する関数をとります。この例では、誰かがあなたのウェブサイト(http://example.com/)をブラウズすると、素敵なメッセージで挨拶されます。

http.HandleFunc("/", func (w http.ResponseWriter, r *http.Request) {
	fmt.Fprint(w, "Welcome to my website!")
})

動的な側面では、http.Requestにはリクエストに関するすべての情報とそのパラメータが含まれています。 r.URL.Query()を使用してGETパラメータを読み取ることができます。r.FormValue("email")を使用して、POSTパラメータ(HTMLフォームのフィールド)を取得します。

静的アセットの配信

JavaScript、CSS、画像などの静的アセットを処理するために、組み込みのhttp.FileServerを使用してURLパスを指定します。ファイルサーバーが正常に動作するためには、ファイルを提供する場所を知っておく必要があります。例えばこのように書けます。

fs := http.FileServer(http.Dir("static/"))

私たちのファイルサーバが一旦配置されると、動的リクエストと同様に、URLパスを指定するだけで済みます。注意すべきこと:ファイルを正しく提供するためには、URLパスの一部を取り除く必要があります。通常これはファイルが置かれているディレクトリの名前です。

http.Handle("/static/", http.StripPrefix("/static/", fs))

接続を受け入れる

基本的なHTTPサーバーを完成させる最後の作業は、インターネットからの接続を受け入れるために特定のポートで待機することです。お察しの通りGoには組み込みのHTTPサーバーもあり、すぐに開始できます。起動するとブラウザでHTTPサーバーを表示できます。

http.ListenAndServe(":80", nil)

コード(コピペ用)

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

package main

import (
	"fmt"
	"net/http"
)

func main() {
	http.HandleFunc("/", func (w http.ResponseWriter, r *http.Request) {
		fmt.Fprintf(w, "Welcome to my website!")
	})

	fs := http.FileServer(http.Dir("static/"))
	http.Handle("/static/", http.StripPrefix("/static/", fs))

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

参考

6
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
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?