「Go/HTTP」の版間の差分

出典: フリー教科書『ウィキブックス(Wikibooks)』
< Go
削除された内容 追加された内容
Go 版176949から分割
(相違点なし)

2021年4月14日 (水) 09:46時点における版

いわゆる普通のwebサイトの形式である、HTML形式のwebサイトのプロトコルは「HTTP」というプロトコルである。

で、そのHTTPサーバを建てる場合、localhostでいいなら

サーバ側のコード例
package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", aaa)
    http.ListenAndServe("localhost:8080", nil)
}


func aaa(qq http.ResponseWriter, ttt *http.Request) {

fmt.Fprintf(qq,"<h1>あいうえお</h1>\n" )

}

でサーバが建つ。


上記コード中の「aaa」とか「qq」とか「ttt」はデタラメにつけた名前なので、この部分は他の名前でもいい。


webブラウザでアドレス「localhost:8000」にアクセスし、拡大表示された「あいうえお」が表示されていれば成功。


なお、

Fprintf

とは、ファイル入出力の読み書きの関数。Go言語は、このファイル入出力の関数を、HTTP通信にも流用している。(なおPHPも、記述方法は違うが、ファイル入出力の機能を流用する方式である。)


これらの処理でGo言語が一体なにをやっているかというと、ソケット通信というのをやっている。(詳しくは『WinSock』または『Unixソケットプログラミング』を参照せよ。)


上記コードでは「aaa」とかデタラメに変数名をつけたが、慣習的には下記コードのような変数名になる。

サーバ側のコード例
package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", aaa)
    http.ListenAndServe("localhost:8080", nil)
}


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

fmt.Fprintf(w,"<h1>あいうえお</h1>\n" )

}

「w」とか「r」とか何かよく分からないが、慣習的にこう書くので、その慣習に合わせておこう。