Skip to main content

แนะนำ HTTP Server

go-api-fiber สามารถดู video ของหัวข้อนี้ก่อนได้ ดู video

รู้จักกับ HTTP Server

HTTP Server คือ server application ที่ทำการเปิดช่องทางการสื่อสารผ่าน HTTP request ให้สื่อสารผ่าน clients (อย่างพวก web browser, mobile app หรือ web service อื่นๆที่มาขอใช้ Resource) และสามารถตอบกลับผ่าน HTTP Response ไปได้

ซึ่งสามารถทำได้หลายอย่างมากตั้งแต่

  • ทำ API (ซึ่งหัวข้อนี้เราจะมาทำ Rest API กัน)
  • เปิด web page
  • ส่ง file

เป็นต้น

โดย standard library ที่สามารถทำได้ในภาษา Go คือ net/http มาลองดูตัวอย่างผ่าน code กัน

package main

import (
"fmt"
"log"
"net/http"
)

func helloHandler(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/hello" {
http.Error(w, "404 not found.", http.StatusNotFound)
return
}

if r.Method != "GET" {
http.Error(w, "Method is not supported.", http.StatusNotFound)
return
}

fmt.Fprintf(w, "Hello World!")
}

func main() {
http.HandleFunc("/hello", helloHandler)

fmt.Printf("Starting server at port 8080\n")
if err := http.ListenAndServe(":8080", nil); err != nil {
log.Fatal(err)
}
}

ทีนี้ ซึ่งอย่างที่ทุกคนเห็นจาก code ทุกคนจะเห็นว่า

  • code ก็ต้องมา handle method เอง
  • path ก็ต้องมาสร้าง condition แยกเอง

มันส่งผลทำให้ถ้าระบบใหญ่ขึ้น code จุดนี้จะซับซ้อนขึ้น และ ควบคุมยากขึ้นมา = เราเลยจำเป็นต้องมี library สักตัวมาช่วยสิ่งนี้

แล้ว Fiber คืออะไร ?

Ref: https://docs.gofiber.io/

Fiber คือ library ที่ได้แรงบันดาลใจมาจาก Express (ของฝั่ง node.js) ที่ build อยู่บน Fasthttp

  • Fasthttp คือ fastest HTTP engine for Go
  • เน้นไปที่ความไว และความสามารถในการจัดการ "zero memory allocation" ได้

อย่างแรกสุดเราจำเป็นต้องลง library เพิ่มของ Fiber ก่อน ให้ลง package เพิ่มเติมไป

go get github.com/gofiber/fiber/v2

จาก code ด้านบน (ของ net/http) เม่ือเปลี่ยนมาสู่ Fiber จะมีหน้าตาเป็นประมาณนี้แทน

package main

import (
"github.com/gofiber/fiber/v2"
)

func main() {
app := fiber.New()

app.Get("/hello", func(c *fiber.Ctx) error {
return c.SendString("Hello World")
})

app.Listen(":8080")
}

Session นี้เราจะทำอะไรบ้าง

ในหัวข้อนี้สิ่งที่เราจะทำ

  • เราจะสร้าง CRUD (Create - Read - Update - Delete) ผ่านการทำ Rest API ด้วย Fiber ** แต่จะยังไม่ต่อ Database กัน เราจะยังคงเพิ่มผ่าน struct กันก่อน
  • ทำ Upload API
  • อ่าน template html และแสดงผลข้อมูลจาก Fiber
  • อ่าน env เข้ามา (พื้นฐานสำหรับการแยก Environment)
  • รู้จักกับ middleware และลองมาใช้งาน middleware เพื่อกั้นสิทธิ์
  • ลองเพิ่ม swagger เพื่อทำ api documents