引き続きTODOリストを作っていきます。
今回は、Goを使ってみます。
下記の書籍を参考にさせていただいています。
GoでHello World
https://github.com/nek0meshi/todo-list/pull/4
ソースコードはこんな感じです。
package main import ( "fmt" "net/http" "os" ) func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello World! %s!", r.URL.Path[1:]) } func main() { http.HandleFunc("/", handler) fmt.Fprintln(os.Stdout, "Listening...") http.ListenAndServe(":8000", nil) }
いわゆるmain関数が実行されます。
http.HandleFunc("/", handler)
の記述により、/
へのリクエストが、
handler
に渡されます。
http.ListenAndServe(":8000", nil)
の記述で、port 8000でサーバが起動されます。
ブラウザからアクセスするとこんな感じです。
パスパラメータのyushi
に対応して、Hello World! yushi!
という表示となっています。
docker-compose.ymlは下記です。
backend: image: golang:1-alpine ports: - 8000:8000 volumes: - ./backend:/go/src:cached tty: true working_dir: /go/src
goイメージのデフォルトの設定で、go install XX
を実行すると、
/go/src/XX/
のソースのビルド結果が/go/bin/XX
という実行ファイルとして生成されます。
実行ファイルは、Makfileに用意しています。
.PHONY: run-hello-world run-hello-world: docker-compose exec ${BACKEND_CONTAINER_NAME} sh -c "go install hello_world && ../bin/hello_world"
go install
と実行ファイル実行を順に行います。
まとめ
GoでHello Worldまでやってみました。
今後はDB環境を用意してデータ保存、TODOリストのためのAPI作成を行なっていきます。