หากพูดถึงภาษา 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