Open2

【Go言語】個人的によく使うechoの機能まとめ

eisukeeisuke

インポートコマンド

go get -u github.com/labstack/echo/v4

エントリーポイント

func main() {
        //初期化
	e := echo.New()
        
	e.GET("/items", getItems)
	e.POST("/items", createItem)
	e.PATCH("/items/:id", updateItem)
	e.DELETE("/items/:id", deleteItem)

	e.Start(":8080")
}
eisukeeisuke

エントリーポイントから実行される関数

// GET
func getItems(c echo.Context) error {
	// ここにデータ取得のロジックを書く
	return c.String(http.StatusOK, "アイテム一覧")
}

// POST
// jsonをデコードする型を用意しておく
type Item struct {
	Name  string `json:"name"`
	Price int    `json:"price"`
}


func createItem(c echo.Context) error {
	item := &Item{}
	if err := c.Bind(item); err != nil {
		return c.String(http.StatusBadRequest, "リクエストのフォーマットが不正です。")
	}
	// 通常はここでデータベースにitemを保存します。

	return c.JSON(http.StatusCreated, item)
}

// PATCH
func updateItem(c echo.Context) error {
	id := c.Param("id")  // URLからIDを取得
	// ここにデータ更新のロジックを書く
	return c.String(http.StatusOK, "アイテム" + id + "を更新")
}

// DELETE
func deleteItem(c echo.Context) error {
	id := c.Param("id")  // URLからIDを取得
	// ここにデータ削除のロジックを書く
	return c.String(http.StatusOK, "アイテム" + id + "を削除")
}