「Go/HTTP」の版間の差分
< Go
削除された内容 追加された内容
Semi-Brace (トーク | 投稿記録) 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」とか何かよく分からないが、慣習的にこう書くので、その慣習に合わせておこう。