<commit_before># 3.2 Goで簡単なWebサーバを立てる

前の節でWebはhttpプロトコルに基づいたサービスであるとご紹介しました。Go言語では完全なnet/httpパッケージを提供しています。httpパッケージを通して実行できるWebサービスを非常に簡単に立ち上げる事ができます。同時にこのパッケージを使用することで、簡単にWebのルーティング、静的なファイル、テンプレート、cookie等のデータに対して設定と操作を行うことができます。

## httpパッケージでWebサーバを立てる

	package main

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

	func sayhelloName(w http.ResponseWriter, r *http.Request) {
		r.ParseForm()  //オプションを解析します。デフォルトでは解析しません。
		fmt.Println(r.Form)  //このデータはサーバのプリント情報に出力されます。
		fmt.Println("path", r.URL.Path)
		fmt.Println("scheme", r.URL.Scheme)
		fmt.Println(r.Form["url_long"])
		for k, v := range r.Form {
			fmt.Println("key:", k)
			fmt.Println("val:", strings.Join(v, ""))
		}
                fmt.Fprintf(w, "Hello astaxie!") //ここでwに入るものがクライアントに出力されます。
	}

	func main() {
		http.HandleFunc("/", sayhelloName) //アクセスのルーティングを設定します。
		err := http.ListenAndServe(":9090", nil) //監視するポートを設定します。
		if err != nil {
			log.Fatal("ListenAndServe: ", err)
		}
	}

上のコードはbuildした後、web.exeを実行した際、9090ポートでhttpリンクリクエストを監視します。

ブラウザで`http://localhost:9090`を入力してください。

ブラウザで`Hello astaxie!`と出力されたのが見えたかと思います。

アドレスを変えて試してみましょう：`http://localhost:9090/?url_long=111&url_long=222`
<commit_msg>fix indent<commit_after># 3.2 Goで簡単なWebサーバを立てる

前の節でWebはhttpプロトコルに基づいたサービスであるとご紹介しました。Go言語では完全なnet/httpパッケージを提供しています。httpパッケージを通して実行できるWebサービスを非常に簡単に立ち上げる事ができます。同時にこのパッケージを使用することで、簡単にWebのルーティング、静的なファイル、テンプレート、cookie等のデータに対して設定と操作を行うことができます。

## httpパッケージでWebサーバを立てる

	package main

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

	func sayhelloName(w http.ResponseWriter, r *http.Request) {
		r.ParseForm()  //オプションを解析します。デフォルトでは解析しません。
		fmt.Println(r.Form)  //このデータはサーバのプリント情報に出力されます。
		fmt.Println("path", r.URL.Path)
		fmt.Println("scheme", r.URL.Scheme)
		fmt.Println(r.Form["url_long"])
		for k, v := range r.Form {
			fmt.Println("key:", k)
			fmt.Println("val:", strings.Join(v, ""))
		}
		fmt.Fprintf(w, "Hello astaxie!") //ここでwに入るものがクライアントに出力されます。
	}

	func main() {
		http.HandleFunc("/", sayhelloName) //アクセスのルーティングを設定します。
		err := http.ListenAndServe(":9090", nil) //監視するポートを設定します。
		if err != nil {
			log.Fatal("ListenAndServe: ", err)
		}
	}

上のコードはbuildした後、web.exeを実行した際、9090ポートでhttpリンクリクエストを監視します。

ブラウザで`http://localhost:9090`を入力してください。

ブラウザで`Hello astaxie!`と出力されたのが見えたかと思います。

アドレスを変えて試してみましょう：`http://localhost:9090/?url_long=111&url_long=222`

{'fraction_non_alphanumeric': 0.1464240372407956, 'fraction_numerical': 0.02031316123571731, 'mean_word_length': 5.459016393442623, 'pattern_counts': {'":': 2, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1483336', 'n_tokens_mistral': 1544, 'n_tokens_neox': 1371, 'n_words': 117}