หัด Golang part 5
RESTful API, GET POST PUT and DELETE
รู้เรื่องจาก part ที่ผ่านมา
อย่าได้ช้าเดี๋ยวแม่ด่า
GET /books ทำไปแล้ว ยังเหลือ
GET /books/{id}
POST /books
PUT /books{id}
DELETE /books/{id}
GET /books/{id}
เพิ่ม router
router.HandleFunc("/books/{id}", getBookById).Methods("GET")
ฟังก์ชัน getBookById
ผลลัพธ์
POST /books
เพิ่ม router
router.HandleFunc("/books", createBook).Methods("POST")
ฟังก์ชัน createBook
มีสองฟังก์ชันที่เป็นหัวใจสำคัญดังนี้
func (db *DB) Prepare(query string) (*Stmt, error)
และ
func (db *DB) Exec(query string, args ...interface{}) (Result, error)
ฟังก์ชัน Prepare คือเตรียม Insert statement ว่าค่าใดบ้างจะถูก inject เข้ามาตามลำดับ
ฟังก์ชัน Exec คือ execute prepare statement ด้วยค่าที่ถูก inject เข้ามาตามลำดับ
ใน Golang ตัวแปรใดที่รับมาแล้วไม่ใช้ จะถูกรายงานว่าไม่ถูกใช้งาน ฉะนั้นในเมื่อเราไม่ต้องการใช้งานมันอยู่แล้วก็ให้ใช้เครื่องหมาย _ แทน
ตัวอย่าง ไม่ต้องการประกาศตัวแปรรับค่าที่คืนกลับมาจาก Exec (ค่านั้นคือ Result) จึงได้ว่า
_, err = stmt.Exec( ... )
rerun server แล้วทดสอบใช้ Postman ส่งคำขอ POST
ผลลัพธ์
PUT /books/{id}
เพิ่ม router
router.HandleFunc("/books/{id}", updateBookById).Methods("PUT")
ฟังก์ชัน updateBookById
updateBookById นี้เป็นการรวมเอา GET /books/{id} + POST /books ไว้ด้วยกัน กล่าวคือ parameter ได้จาก param[“id”] และ data ได้จาก r.Body
rerun server แล้วส่งคำขอด้วย Postman ในที่นี้คือขอแก้ไข book ที่ id เท่ากับ 3
DELETE /books/{id}
เพิ่ม router
router.HandleFunc("/books/{id}", deleteBookById).Methods("DELETE")
ฟังก์ชัน deleteBookById
rerun server แล้วส่งคำขอลบผ่าน Postman ในที่นี้จะลบหนังสือที่มี id เท่ากับ 1
เป็นอันว่าครบถ้วน GET POST PUT DELETE resource ตามที่สัญญากันไว้
โค้ดทั้งหมด
เป็นอย่างไรบ้างครับ Golang แบบด่วนๆไวๆ ก็จะติดบ้างสะดุดบ้าง แต่สุดท้ายก็ไถจนออกเป็นชิ้นงานได้ ชมเชยตนเองว่าเรานี่ก็ใช้ได้เหมือนกันแฮะ 555