ข้ามไปยังเนื้อหาหลัก
ProgrammerThailand

GO Lang

สร้าง GO API ด้วย Echo Framework

สร้าง GO API ด้วย Echo Framework

ในบทเรียนรู้นี้เรามาสร้าง API อย่างง่ายเพื่อการเรียนรู้ภาษา GO ที่เขาว่าเร็ว แรง ทะลุนรกกัน เริ่มจากการติดตั้ง Echo Framework เลยแล้วกันครับ ในที่นี้จะใช้ MariaDB เป็นฐานข้อมูล

mkdir my
cd my
go get -u github.com/labstack/echo/...

ติดตั้ง Package ด้านการทำงานกับ Database ในที่นี้ใช้ GORM

go get -u github.com/jinzhu/gorm

ซึ่งต้องติดตั้งอีกตัวเพื่อเรียกใช้งาน MariaDB

go get github.com/go-sql-driver/mysql

จากนั้นสร้างไฟล์ server.go

touch server.go

เปิด Editor ในที่นี้ใช้ Visual Studio Code จากนั้นก็เขียนโปรแกรม

func main() {
	e := echo.New()
	e.GET("/", func(c echo.Context) error {
		return c.String(http.StatusOK, "Hello, World!")
	})
    e.Logger.Fatal(e.Start(":1323"))
}

จากนั้นก็ลอง run ไฟล์ ด้วยคำสั่ง go run server.go

go run server.go 

   ____    __
  / __/___/ /  ___
 / _// __/ _ \/ _ \
/___/\__/_//_/\___/ v4.1.10
High performance, minimalist Go web framework
https://echo.labstack.com
____________________________________O/_______
                                    O\
⇨ http server started on [::]:1323

เปิด browser จากนั้นเปิด URL http://localhost:1323 จะพบ Hello, World! เป็นอันว่า Echo Framework ทำงาน

จากนั้นเขียนโปรแกรมสำหรับทำ API โดยให้สร้างตาราง users (อัตโนมัตินะ)

package main

import (
	"log"
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
	"net/http"
	"github.com/labstack/echo"
)

func main() {
	e := echo.New()
	/*e.GET("/", func(c echo.Context) error {
		return c.String(http.StatusOK, "Hello, World!")
	})*/


	//กำหนด Route ก่อนเลย พร้อมให้ call ไปยัง func ต่างๆ
	h := UserHandler{}
	h.Initialize()

	e.GET("/users", h.GetAllUser)
	e.POST("/users", h.SaveUser)
	e.GET("users/:id", h.GetUser)
	e.PUT("/users/:id", h.UpdateUser)
	e.DELETE("/users/:id", h.DeleteUser)

	e.Logger.Fatal(e.Start(":1323"))
}

type UserHandler struct {
	DB *gorm.DB
}

//ให้เชื่อมต่อฐานข้อมูลเมื่อ Initialize 
func (h *UserHandler) Initialize() {
	db, err := gorm.Open("mysql", "root:@tcp(127.0.0.1:3306)/godb?charset=utf8&parseTime=True")
	if err != nil {
		log.Fatal(err)
	}

	db.AutoMigrate(&User{})

	h.DB = db
}

type User struct {
	Id 			uint 	`gorm:"primary_key" json:"id"`
	FirstName 	string 	`json:"firstName"`
	LastName	string 	`json:"lastName"`
	Age			int 	`json:"age"`
	Email		string	`json:"email"`
}

func (h *UserHandler) GetAllUser(c echo.Context) error {
	users := []User{}

	h.DB.Find(&users)

	return c.JSON(http.StatusOK, users)
}

func (h *UserHandler) GetUser(c echo.Context) error {
	id := c.Param("id")
	user := User{}

	if err := h.DB.Find(&user, id).Error; err != nil {
		return c.NoContent(http.StatusNotFound)
	}

	return c.JSON(http.StatusOK, user)
}

func (h *UserHandler) SaveUser(c echo.Context) error {
	user := User{}

	if err := c.Bind(&user); err != nil {
		return c.NoContent(http.StatusBadRequest)
	}

	if err := h.DB.Save(&user); err != nil {
		return c.NoContent(http.StatusInternalServerError)
	}

	return c.JSON(http.StatusOK, user)
}

func (h *UserHandler) UpdateUser(c echo.Context) error {
	id := c.Param("id")
	user := User{}

	if err := h.DB.Find(&user, id).Error; err != nil {
		return c.NoContent(http.StatusNotFound)
	}

	if err := c.Bind(&user).Error; err != nil {
		return c.NoContent(http.StatusBadRequest)
	}

	if err := h.DB.Save(&user).Error; err != nil {
		return c.NoContent(http.StatusInternalServerError)
	}

	return c.JSON(http.StatusOK, user)
}

func (h *UserHandler) DeleteUser(c echo.Context) error {
	id := c.Param("id")
	user := User{}

	if err := h.DB.Find(&user, id).Error; err != nil {
		return c.NoContent(http.StatusNotFound)
	}

	return c.NoContent(http.StatusNoContent)
}

จากนั้นทำการ run ด้วยคำสั่ง go run server.go

go run server.go 

   ____    __
  / __/___/ /  ___
 / _// __/ _ \/ _ \
/___/\__/_//_/\___/ v4.1.10
High performance, minimalist Go web framework
https://echo.labstack.com
____________________________________O/_______
                                    O\
⇨ http server started on [::]:1323

เมื่อเปิด localhost/phpmyadmin จะพบตาราง users ใน ฐานข้อมูล godb

สร้าง GO API ด้วย Echo Framework

จากนั้นทดลองใช้ Postman เรียก API 

สร้าง GO API ด้วย Echo Framework

จะเห็นว่ามีรายการข้อมูลในตาราง

สร้าง GO API ด้วย Echo Framework



https://echo.labstack.com/guide

ติดปัญหาตอนทำตาม? ถามในชุมชน

ความคิดเห็น (0)

ยังไม่มีความคิดเห็น — เริ่มคุยเป็นคนแรก ถามสิ่งที่สงสัย หรือแชร์ประสบการณ์ของคุณ

แชร์