มาสร้าง API ด้วย Go และ Buffalo framework กันเถอะ !! [Part 1]

มาสร้าง API ด้วย Go และ Buffalo framework กันเถอะ !! [Part 1]
06/02/19   |   10.5k

    หากพูดถึงภาษา Go เชื่อว่าหลาย ๆ คนคงเคยผ่านหูผ่านตากับคำนี้มาบ้างแล้ว เนื่องจากเป็นภาษาที่มาแรงมาก ๆ ในช่วงนี้ เพราะทาง Google เองเป็นผู้พัฒนา และจุดเด่นของภาษา Go คือการทำงานแบบ Concurrent ที่ดีมาก ๆ รวมถึงการพัฒนาซอฟต์แวร์จะเป็นไปในทางเดียวกัน เพราะ Go มีแนวทางการเขียนโค้ดไว้ให้ค่อนข้างละเอียด

    ในบทความนี้จึงนำ framework ที่มีชื่อว่า Buffalo มาช่วยให้สามารถพัฒนา Web service ด้วยภาษา Go ได้ง่ายยิ่งขึ้น 

ข้อดีของภาษา Go

เนื้อหาของบทความ

  • การติดตั้ง [part 1]
  • เริ่มต้นสร้าง API [part 2]

การติดตั้ง

สามารถติดตั้งดาวน์โหลด Go ได้ที่ Official binary distributions ครับ 

* สำหรับบทความนี้จะใช้ MacOS ประกอบการสอนนะครับ

หลังจากดาวน์โหลดเสร็จให้ทำการ double click ที่ไฟล์ go1.11.5.darwin-amd64.pkg จะเจอกับ installer

ให้กด continue ได้เลยครับ

ถ้าเจอหน้านี้ ก็แปลว่าติดตั้งเสร็จครับ

เรามาทดสอบกันหน่อยครับว่าสามารถใช้ Go ได้หรือยัง โดยทำการสร้าง workspace ที่ home directory ชื่อ go 

หากไม่รู้ว่า home directory อยู่ที่ไหน สำหรับ MacOS ให้เปิด terminal ขึ้นมาแล้วพิมพ์

$ echo $HOME
/Users/nan

สำหรับ path HOME ของผมคือ /Users/nan

หลังจากนั้นให้สร้างไฟล์ hello.go ที่ workspace ของเรา (/Users/nan/go/src/helloword/hello.go)

$ cd $HOME
$ mkdir -p go/src/helloworld go/bin && touch go/src/helloworld/hello.go

เสร็จแล้วให้เปิดไฟล์ hello.go ขึ้นมา แล้วพิมพ์

package main

import "fmt"

func main() {
	fmt.Printf("hello, world\n")
}

กด save แล้วทำการ build ด้วยคำสั่ง

$ go build

จะได้ไฟล์ hello ออกมา ทำการ run ด้วยคำสั่ง

$ ./hello
hello, world

จะได้ข้อความว่า "hello, world" ออกมา

โค้ด Go สามารถรันในเครื่องเราได้แล้วครับ !!

มาลง Buffalo Framework กันต่อครับ

สำหรับ MacOS สามารถติดตั้งได้ง่าย ๆ โดยคำสั่ง

$ brew install gobuffalo/tap/buffalo

เสร็จแล้วมาทดสอบกันครับว่าติดตั้งสำเร็จหรือไม่ ด้วยคำสั่ง

$ buffalo
Helps you build your Buffalo applications that much easier!

Usage:
  buffalo [command]

Available Commands:
  build       Builds a Buffalo binary, including bundling of assets (packr & webpack)
  db          A tasty treat for all your database needs
  destroy     Allows to destroy generated code.
  dev         Runs your Buffalo app in 'development' mode
  generate    A collection of generators to make life easier
  help        Help about any command
  info        Prints off diagnostic information useful for debugging.
  new         Creates a new Buffalo application
  setup       Setups a newly created, or recently checked out application.
  task        Runs your grift tasks
  test        Runs the tests for your Buffalo app
  update      will attempt to upgrade a Buffalo application to version v0.13.13
  version     Print the version number of buffalo

ถ้าขึ้นตามนี้แสดงว่าติดตั้งสำเร็จครับ

โครงสร้างของ Go

สำหรับ Structure ของ gobuffalo จะเป็นดังนี้ครับ

 

go/ — GOPATH root.

  • src/ — Go sources directory
    • github.com/username/myapp/ — your app root
      • actions/
      • assets/
      • grifts/
      • locales/
      • models/
      • public/
      • templates/
      • tmp/
      • database.yml
      • main.go

ยังไงสามารถอ่านคำอธิบายเต็ม ๆ ได้ที่ Directory structure ครับ

ถึงเวลาสร้างโปรเจคกันแล้ว !!

ทำการสร้างโฟลเดอร์ดังนี้ครับ

$ mkdir -p $HOME/go/src/github.com/$USER/ && cd $HOME/go/src/github.com/$USER/

หลังจากนั้นทำการ create project ด้วยคำสั่งของ bufallo

* สำหรับ Buffalo นั้น จะมี tool อำนวยความสะดวกให้เราในการสร้างไฟล์ต่าง ๆ ภายในโปรเจค

$ buffalo new my-app --api --skip-pop

โดย "my-app" จะเป็นชื่อโปรเจคของเรา flag "--api" จะบอกว่าเราต้องการสร้าง API เท่านั้น และ flag "--skip-pop" จะเป็นการข้ามส่วน supported database

เสร็จแล้วทำการ cd เข้าไปในโปรเจคของเราแล้ว run ด้วยคำสั่ง

$ buffalo dev

เสร็จแล้วเปิด browser เข้าไปที่ url http://localhost:3000/ จะเจอกับข้อความ 

{
  "message": "Welcome to Buffalo!"
}

gobuffalo ของเราใช้งานได้แล้ว !!

References

 

tags : golang buffalo api backend



ติดตามข่าวสารและเรื่องราวดีๆ ทาง Email