สร้าง web service ง่ายๆ ด้วย net/http

ส่วนใหญ่มักจะมีคนมาถามเรื่อยเลยว่า Go นั้นเขียน web ได้หรือไม่ เลยเป็นการดีจะมาเล่าให้ฟัง

Go มี built-in library ชื่อ net/http เอาไว้จัดการเรื่องของ http ไม่ว่าจะเป็นฝั่ง client หรือ server ก็ตาม เราสามารถสร้าง http server ได้อย่างง่ายๆ

เราจะมาลองทำ web service ง่ายๆ ซักตัวโดย request เป็น

GET /api/hello

response ที่ได้กลับมาเป็น

{“text”: “hello”}

อย่างแรกเลยสร้าง web server ของเราให้มัน response คำว่า hello ขึ้นมาก่อน โดยสร้างไฟล์ชื่อ server.go

ทดสอบโดยใช้คำสั่ง go run server.go และเข้าที่ browser หรือ rest client ก็ได้แล้วแต่ชอบ

ต่อมาเราทำให้มัน response กลับเป็น json กันโดยใช้ package encoding/json

เราใช้ function Marshal ในการแปลง type ใน go ไปเป็น json นั้นเอง ต่อมาถ้าเราลองเปิด inspector แล้วจะเห็นว่า Content-Type จะเป็น text/plain เราเลยจะต้องบอกว่าให้คืนกลับเป็น application/json ด้วยดังนี้


ทีนี้ให้ลองเปิด rest client แล้วลองเปลี่ยน HTTP method เป็น POST หรืออะไรก็ได้ที่ไม่ใช่ GET จะสังเกตเห็นว่ามันสามารถ response json กลับไปได้หมดเลย แต่ reqirement เราบอกว่าได้แค่ GET เท่านั้น เราสามารถทำได้โดยใช้ field Method ของ Request มาช่วยในการตรวจสอบว่า request ที่เข้ามาเป็น HTTP method อะไร ดังตัวอย่างด้านล่าง

จากตัวอย่างด้านบนเราจะใช้ http.Error ในการส่ง error response กลับไปโดยรับ ResponseWriter, message เป็น string, และ HTTP code สามตัว

เท่านี้เราก็ได้ web service อย่างง่ายๆ กันแล้ว :)