สร้าง API สำหรับ Generate QR Code
ในบทความนี้เราจะลองใช้ภาษา Go เพื่อสร้าง QR Code กันครับ แล้วจากนั้นก็จะดัดแปลงโค้ดอีกนิดหน่อยเพื่อให้เป็น API ที่เราสามารถยิง Request ไปได้ แล้วส่งผลลัพธ์กลับมาเป็นภาพ QR Code
เตรียมโปรเจคให้พร้อมก่อนเริ่มกัน
เพราะว่าเราจะใช้ Go ในการเขียนโปรแกรม สิ่งแรกที่จำเป็นต้องมีในเครื่องก่อนก็คือ Go นั่นเอง ทำการติดตั้ง Go ได้จาก ลิงค์นี้ครับ
ก่อนอื่นเราจะเริ่มต้นด้วยการสร้างโปรเจคกันก่อนด้วยการสร้างโฟลเดอร์สำหรับโปรเจคนี้ อย่างในตัวอย่างเราสร้างโฟลเดอร์ชื่อ qrcode ครับ จากนั้นก็เข้าไปในโฟลเดอร์นั้นเลย
mkdir qrcode
cd qrcode
ทำการสร้างโปรเจคด้วยการสร้าง module ในภาษา Go ผ่านคำสั่งคือ
go mod init qrcode
เมื่อเสร็จเรียบร้อยให้ทำการสร้่างไฟล์ main.go ขึ้นมา แล้วทำการสร้างฟังก์ชัน main ซึ่งเป็นฟังก์ชันเริ่มต้นของการทำงาน ดังนี้
package main
func main() {
}
สร้าง QR Code ด้วยแพคเกจ barcode
ก่อนอื่นเราจะต้องทำการติดตั้งแพคเกจสำหรับสร้าง QR Code กันก่อน ให้ออกคำสั่งตามนี้เพื่อติดตั้งครับ
go get -u github.com/boombuler/barcode
ใส่โค้ดตามนี้ในไฟล์ main.go เพื่อสร้าง QR Code
package main
import (
"image/png"
"os"
"github.com/boombuler/barcode"
"github.com/boombuler/barcode/qr"
)
func main() {
// QR Code ที่ได้เมื่อสแกนแล้วจะได้ข้อความคือ
// https://www.codesass.com/courses/golang
qrCode, _ := qr.Encode("https://www.codesass.com/courses/golang", qr.M, qr.Auto)
// ตั้งค่าขนาดรูปไว้ที่ 200 x 200
qrCode, _ = barcode.Scale(qrCode, 200, 200)
// โดยภาพที่ได้จะบันทึกเป็นไฟล์ชื่อ qr.png
file, _ := os.Create("qr.png")
// หลังจบฟังก์ชันจะทำการปิดไฟล์โดยอัตโนมัติ
defer file.Close()
// ทำการบันทึก QR Code ที่ได้ลงไฟล์ PNG
png.Encode(file, qrCode)
}
ทำการสั่งรันโปรแกรมด้วยคำสั่ง go run main.go
เมื่อการทำงานเสร็จสิ้นเราจะพบไฟล์ชื่อ qr.png ในโฟลเดอร์ qrcode ของเรา
สร้าง API เพื่อ generate QR Code
Note: ถ้าเราทำเว็บฝั่ง UI เอง Generate QR Code ที่ฝั่ง UI เองจะดีกว่านะครับ
เราจะใช้ Gin Framework ในการสร้าง API กันครับ
โดยกำหนดให้เมื่อยิง API มาที่ /qrcode/<TEXT>
แล้วจะได้ไฟล์รูปภาพของ QR Code กลับไป
โดยเมื่อสแกนแล้วจะได้ข้อความว่าอะไรขึ้นอยู่กับเราส่ง <TEXT>
เป็นอะไรนั่นเอง
ก่อนอื่นเราจะทำการติดตั้ง Gin กันก่อนผ่านคำสั่งต่อไปนี้
go get -u github.com/gin-gonic/gin
ใส่โค้ดต่อไปนี้ใน main.go
package main
import (
"fmt"
"image/png"
"os"
"github.com/boombuler/barcode"
"github.com/boombuler/barcode/qr"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
// :text จะจับคู่กับ path ที่เข้ามา
r.GET("/qrcode/:text", func(c *gin.Context) {
// หากระบุ path เข้ามาเป็น /qrcode/hello
// text จะมีค่าเป็น hello
text := c.Param("text")
qrCode, _ := qr.Encode(text, qr.M, qr.Auto)
qrCode, _ = barcode.Scale(qrCode, 200, 200)
file, _ := os.Create("qr.png")
defer file.Close()
// c.Writer หมายความว่า
// จากเดิมที่เขียน QR code ไปที่ไฟล์
// ให้ส่งไปเป็น response แทน
png.Encode(c.Writer, qrCode)
})
r.Run()
}
เมื่อเขียนโค้ดเสร็จสิ้นให้ลองออกคำสั่ง go run main.go
ตรงส่วนนี้ API จะทำงานที่ http://127.0.0.1:8080
ให้ลองเข้าเว็บเบราว์เซอร์ไปที่ http://127.0.0.1:8080/qrcode/hello
เราจะได้ QR Code ที่เมื่อแสกนแล้วจะเป็นคำว่า hello ครับ
นี่เป็นตัวอย่างง่าย ๆ ของการสร้าง API เพื่อ generate QR Code ในความเป็นจริงแล้วเราสามารถสร้าง API แบบ HTTP POST ที่สามารถส่งค่า text เป็นส่วนของ Body ก็ได้เช่นกัน
เรียนรู้การใช้งานภาษา Go
เรียนภาษา Go พร้อมสร้าง RESTful API ด้วย Go สุดคุ้มกับ 43+ บทเรียน พร้อมใบ Certificate ไม่จำกัดเวลาเรียน โปรโมชั่นพิเศษ เพียง 990.- บาท (ราคาปกติ 2,950 บาท) ลงทะเบียน 👉 https://www.codesass.com/courses/golang
ภาษา Go (Golang) เป็นหนึ่งในภาษายอดนิยมในปัจจุบัน มีรูปแบบ Syntax ที่เรียบง่ายสั้นกระชับ Go มีการทำงานที่ไว และเป็นภาษาที่อาศัยการ Compile ผลลัพธ์ออกมาเป็น Executable File (เช่นไฟล์ .exe) โดย Go นั้นใช้เวลา Compile โปรแกรมที่สั้นมาก ๆ เมื่อเทียบกับภาษาอื่น เช่น C/C++ เป็นต้น แถม Go ยังเป็นภาษาที่เขียนการทำงานแบบ Concurrency ได้ง่าย ข้อดีทั้งหมดนี้ Go จึงเหมาะกับการสร้างโปรแกรมทั้งแบบ CLI, Backend API, โปรแกรมบน Cloud ดังจะเห็นได้จากหลาย ๆ โปรเจคที่พัฒนาด้วย Go เช่น Docker, Kubernetes เป็นต้น
🏆 ปัจจุบันบริษัท Tech หลายแห่งในไทยรับสมัครสายงานที่เกี่ยวกับ Go ค่าตัวแพงระดับ 35K - 120K++ จบคอร์สนี้ผู้เรียนสามารถต่อยอดทำงานในสายอาชีพ Go Developer ได้เลย
คอร์สนี้สอนการใช้งานภาษา Go (Golang) ตั้งแต่เริ่มต้น พร้อมสร้าง Backend แบบ RESTful API และสร้าง Real World โปรเจคไปกับระบบขายสินค้า
👏 สิ่งที่ผู้เรียนจะได้รับจากคอร์สนี้
- เข้าใจการเขียนโปรแกรมด้วย Go ด้วยเนื้อหาที่สั้น กระชับ ไม่หนักหัว
- เข้าใจหลักการของ RESTful API และการใช้ Go + Gin Framework เพื่อสร้าง API
- เรียนรู้การใช้ GORM เพื่อต่อฐานข้อมูลคือ MySQL
- เข้าใจการทำงานกับฟอร์มผ่านภาษา Go
- เรียนรู้การเชื่อมต่อกับ UI กับ API
♨️ พิเศษสุด !!
- เราเชื่อว่าการเรียนต้องได้ทำจริง คอร์สของเรามี Workshop ระบบร้านขายของออนไลน์
- ไม่จำกัดเวลาเข้าเรียน เรียนได้ทุกเมื่อที่ต้องการ
- มีแบบทดสอบท้ายคอร์สเพื่อประเมินตนเอง
- คอร์สนี้มีใบ Certificate แจกไว้อัพโปรไฟล์
- ถาม-ตอบ ได้ในบทเรียนเมื่อไม่เข้าใจเนื้อหา
อัพสกิล Go สุดคุ้มในราคา 990 บาท (จากราคาปกติ 2,950 บาท) เนื้อหาจัดเต็มไม่จำกัดเวลาเรียน ลงทะเบียนที่ https://www.codesass.com/courses/golang ขอให้สนุกกับการเรียนรู้ Go ไปด้วยกันครับ 😁