หัด Golang part 5

Phai Panda
3 min readSep 22, 2019

--

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

201 Created

ผลลัพธ์

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

id 3 ถูกแก้ไข

DELETE /books/{id}

เพิ่ม router

router.HandleFunc("/books/{id}", deleteBookById).Methods("DELETE")

ฟังก์ชัน deleteBookById

rerun server แล้วส่งคำขอลบผ่าน Postman ในที่นี้จะลบหนังสือที่มี id เท่ากับ 1

id 1 หายไปแล้ว

เป็นอันว่าครบถ้วน GET POST PUT DELETE resource ตามที่สัญญากันไว้

โค้ดทั้งหมด

เป็นอย่างไรบ้างครับ Golang แบบด่วนๆไวๆ ก็จะติดบ้างสะดุดบ้าง แต่สุดท้ายก็ไถจนออกเป็นชิ้นงานได้ ชมเชยตนเองว่าเรานี่ก็ใช้ได้เหมือนกันแฮะ 555

แหล่งอ้างอิง

รักนะครับ

--

--

No responses yet