### Get
import ( "net/http" "github.com/labstack/echo/v4" ) func main() { e := echo.New() e.GET("/users/:name", getUserName) e.Logger.Fatal(e.Start(":1323")) } func getUserName(c echo.Context) error { name := c.Param("name") return c.JSON(http.StatusOK, name) }
### QueryParamを使う場合
func main() { e := echo.New() e.GET("/show", show) e.Logger.Fatal(e.Start(":1323")) } func show(c echo.Context) error { team := c.QueryParam("team") member := c.QueryParam("member") return c.String(http.StatusOK, "team:"+team+", member:"+member) }
http://192.168.33.10:1323/show?team=test&member=hpscript
### Post
FormValueで受け取る
func main() { e := echo.New() e.GET("/save", save) e.Logger.Fatal(e.Start(":1323")) } func save(c echo.Context) error { name := c.FormValue("name") email := c.FormValue("email") return c.String(http.StatusOK, "name:"+name+", email:"+email) }
### JSONで返却
type User struct { Name string `json:"name"` Email string `json:"email"` } func main() { e := echo.New() e.GET("/users", saveUser) e.Logger.Fatal(e.Start(":1323")) } func saveUser(c echo.Context) error { u := new(User) if err := c.Bind(u); err != nil { return err } return c.JSON(http.StatusOK, u) }
type Message struct { Name string `json:"name"` Email string `json:"email"` Message string `json:"message"` } type Response struct { Name string `json:"name"` Email string `json:"email"` Message string `json:message` Status string `json:status` } func main() { e := echo.New() e.GET("/send", sendMessage) e.Logger.Fatal(e.Start(":1323")) } func sendMessage(c echo.Context) error { m := new(Message) if error := c.Bind(m); error != nil { return error } r := new(Response) r.Name = m.Name r.Email = m.Email r.Message = m.Message r.Status = "success" return c.JSON(http.StatusOK, r) }
なるほど、ルーティングの機能についてはある程度わかりました。
MVCに分かれているのではなく、1枚のファイルの中に書いていくのね。