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