URLパラメータでidを取得したが、その型がstringなのでintに変換してからFindする必要があった。http://localhost:1323/users/id/2 このようにアクセスするとIDに従ったユーザの名前が表示できる。
package main import ( // サーバ系 "net/http" "github.com/labstack/echo" "github.com/labstack/echo/engine/standard" // mongo系 "fmt" "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" // 型 "strconv" //"reflect" ) // ユーザクラス type User struct { Name string `bson:"name"` Id int `bson:"id"` } func main() { e := echo.New() e.GET("/", func(c echo.Context) error { return c.String(http.StatusOK, "Hello, World!") }) // :id, :name に値が入っていないとNot Foundになる e.GET("/users/id/:id", func(c echo.Context) error { // 数値に変換する必要あり var id int id, _ = strconv.Atoi(c.Param("id")) //idでDBを引く session, _ := mgo.Dial("mongodb://localhost") defer session.Close() db := session.DB("mydb") // id指定でユーザ取得 var results []User fmt.Println(id) db.C("users").Find(bson.M{"id": id}).All(&results) fmt.Println("Results of one user: ", results) fmt.Println(len(results)) if len(results) == 0 { return c.String(http.StatusOK, "No user") }else{ name := results[0].Name return c.String(http.StatusOK, "Hello, " + name) } }) e.POST("/user", func(c echo.Context) error { return c.String(http.StatusOK, "Hello, POST user") }) // ポート e.Run(standard.New(":1323")) }