vagrnantでechoを使ってHelloWorldを表示させる。 goは入っている前提でいきます。
vagrant設定
使いそうなのをコメントアウト。
config.vm.box = "centos6.7" config.vm.box_check_update = false config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1" config.vm.network "private_network", ip: "192.168.33.14" config.vm.synced_folder ".", "/vagrant" vb.memory = "1024"
後にlocalhostで使うので、forwarded_portを設定します。
HelloWorldを画面に表示させる
$ cd /vagrant $ mkdir echo_sample $ cd echo_sample //echoインストール $ go get github.com/labstack/echo $ go get github.com/dgrijalva/jwt-go
https://qiita.com/ezaki/items/62e806ae42828bb3567a 上記の記事を参考に、helloworldを表示させる。
//main/go package main import ( "github.com/labstack/echo" "./handler" ) func main() { // Echoのインスタンス作る e := echo.New() // ルーティング e.GET("/hello", handler.MainPage()) // サーバー起動 e.Start(":1323") //ポート番号指定してね }
handler/handler.go package handler import ( "net/http" "github.com/labstack/echo" ) func MainPage() echo.HandlerFunc { return func(c echo.Context) error { //c をいじって Request, Responseを色々する return c.String(http.StatusOK, "Hello World") } }
これで、サーバーを動かす。
go run main.go
localhost/helloにアクセスすれば、helloworldが表示されるはず。 だけど、このままではlocalhostにページが表示されません的なエラーが出ますね。
これはポートの開放設定を行なっていないからなので、設定をします。 https://qiita.com/ttaka66/items/63de40e76189d293f0dc
$ vagrant ssh $ sudo vi /etc/sysconfig/iptables //-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT追記 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
ポート番号は任意のものです。今回は、8080で行きます。
vagrant reload後、再度go run main.go。
今回は、/helloでHelloWorldが表示されます。
jsonを返すようにする
//main.go //ルーティングに以下を追加 e.GET("/api/hello", handler.ApiHelloGet())
//handler.go //追加 func ApiHelloGet() echo.HandlerFunc { return func(c echo.Context) error { //c をいじって Request, Responseを色々する return c.JSON(http.StatusOK, map[string]interface{}{"hello": "world"}) } }
curl localhost:8080/api/hello
jsonでHelloWorld返却。