インターネットのスケッチ

Done is better than perfect.

APIを作るための勉強中

RailsでWebアプリ作るのが先月公開までいけたので、次はAPIの勉強をしている。

とりあえず今は『Real World HTTP』を読んでる。

実装例がGoで書かれてるけど、サーバーの立て方とログの見方をここにメモしておく。

package main

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

func handler(w http.ResponseWriter, r *http.Request) {
    dump, err := httputil.DumpRequest(r, true)
    if err != nil {
        http.Error(w, fmt.Sprint(err), http.StatusInternalServerError)
        return
    }
    fmt.Println(string(dump))
    fmt.Fprintf(w, "<html><body>hello</body></html>\n")
}

func main() {
    var httpServer http.Server
    http.HandleFunc("/", handler)
    log.Println("start http listening :18888")
    httpServer.Addr = ":18888"
    log.Println(httpServer.ListenAndServe())
}

上のコードをserver.goというファイルに保存して、ターミナルで go run server.go を実行するとサーバーが立ち上がる。 あとはターミナルの別タブで各goファイルを go run して実行していけば、server.goを立ち上げた方の画面にログが出力されていく。

$ go run server.go
2018/08/15 16:06:15 start http listening :18888
POST / HTTP/1.1
Host: localhost:18888
Accept-Encoding: gzip
Content-Length: 12
Content-Type: text/palin
User-Agent: Go-http-client/1.1

...