Using JSON in Go ส่งไปส่งกลับกับ JavaScript Front-end
ในยุคของการพัฒนาเว็บแอปพลิเคชัน, การสื่อสารระหว่างหลังบ้านและหน้าจอผู้ใช้งานเป็นสิ่งที่สำคัญอย่างยิ่ง หนึ่งในการสื่อสารที่ได้รับความนิยมกันมากคือการใช้ JSON (JavaScript Object Notation) เพราะ JSON เป็นรูปแบบข้อมูลที่เข้าใจง่าย และนักพัฒนาสามารถใช้มันเพื่อส่งข้อมูลระหว่างเซิร์ฟเวอร์กับ Front-end ได้อย่างง่ายดาย ในบทความนี้เราจะดูวิธีการใช้งาน JSON ในภาษา Go จากนั้นจะทำการส่งข้อมูลนั้นไปยัง Front-end ที่พัฒนาด้วย JavaScript
เมื่อมีการพูดถึง Web Service หลายๆคนอาจนึกถึง REST API ที่เป็นมาตรฐานในการสร้างและใช้งานแบบหนึ่ง JSON ก็เป็นส่วนหนึ่งที่ทำให้ REST API นั้นทำงานได้ดี เพราะมันทำให้การแลกเปลี่ยนข้อมูลระหว่าง Client และ Server นั้นทำได้อย่างราบรื่น ในทางวิชาการ, เราต้องเข้าใจการทำงานของ JSON เสียก่อน เพื่อที่จะได้มองเห็นภาพของการทำงานร่วมกันระหว่างหลังบ้านและหน้าจอให้ชัดเจนยิ่งขึ้น
Go หรือ Golang เป็นภาษาที่ได้รับการออกแบบมาเพื่องานขนาดใหญ่ ที่ต้องการประสิทธิภาพหรือการทำงานที่รวดเร็วและมั่นคง Go มีความสามารถในการจัดการกับ JSON อย่างชาญฉลาดผ่านไลบรารีมาตรฐานซึ่งรวมอยู่ในภาษา นี่หมายความว่าเราไม่ต้องติดตั้ง package เพิ่มเติมเพื่อทำงานกับ JSON
การใช้งาน JSON ใน Go เริ่มจากการนิยาม struct ที่เป็นโครงสร้างของข้อมูลที่เราต้องการแลกเปลี่ยน โดยใช้ struct tags ในการกำหนดความสัมพันธ์ระหว่างฟิลด์ของ struct และคีย์ใน JSON
type User struct {
ID string `json:"id"`
FirstName string `json:"firstName"`
LastName string `json:"lastName"`
}
จากนั้นเราจะใช้ function เช่น `json.Marshal` เพื่อแปลง struct ไปเป็น JSON และ `json.Unmarshal` เพื่อแปลง JSON กลับเป็น struct ซึ่งทำให้การส่งข้อมูลไปมาระหว่าง Go กับอีกฝ่าย (เช่น client เว็บบราวเซอร์ที่ใช้ JavaScript) นั้นทำได้อย่างเรียบง่าย
เมื่อมีการพูดถึงการส่งข้อมูลจาก Server ไปยัง Front-end นั้นเรามักจะใช้ HTTP protocol ในการแลกเปลี่ยนข้อมูล สำหรับ Go เราสามารถสร้าง HTTP server ขึ้นมาและใช้พื้นที่ในการจัดการ request และ response ได้ด้วยฟังก์ชั่นต่างๆที่ไลบรารี net/http มีให้
ด้านล่างนี้คือตัวอย่างของโค้ดที่ใช้สร้าง REST API ซึ่งจะรับ request เป็น JSON จาก JavaScript Front-end จากนั้นส่ง response กลับไปเป็นข้อมูลในรูปแบบ JSON:
package main
import (
"encoding/json"
"log"
"net/http"
)
type User struct {
ID string `json:"id"`
FirstName string `json:"firstName"`
LastName string `json:"lastName"`
}
// HandlerFunction สำหรับรับข้อมูลและส่งกลับไปเป็น JSON
func userHandler(w http.ResponseWriter, r *http.Request) {
// สร้าง User ขึ้นมาเพื่อทดสอบ
user := User{ID: "1", FirstName: "Somchai", LastName: "Sookjai"}
jsonResponse, err := json.Marshal(user)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "application/json")
w.Write(jsonResponse)
}
func main() {
http.HandleFunc("/user", userHandler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
สำหรับด้าน Front-end ที่พัฒนาด้วย JavaScript คุณสามารถใช้ `fetch` API หรือ library เช่น Axios เพื่อเรียกใช้งาน API ที่ถูกสร้างด้วย Go และดึงข้อมูล JSON มาใช้งานได้
fetch('http://localhost:8080/user')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
การเรียนรู้การสื่อสารระหว่างหลังบ้านและหน้าจอด้วย JSON ใน Go นั้นเป็นหนึ่งในทักษะที่สำคัญสำหรับการเป็นนักพัฒนาโปรแกรมเมอร์ที่เชี่ยวชาญ หากคุณมองหาที่ที่จะเรียนรู้ไม่เพียงแค่เรื่อง Go และ JSON แต่ยังรวมถึงทักษะการเขียนโปรแกรมด้วยหลักการและวิธีการที่ถูกต้อง พวกเราที่ Expert-Programming-Tutor (EPT) พร้อมให้ความรู้และแนะนำคุณ ไม่ว่าคุณจะเป็นผู้เริ่มต้นใหม่ หรือมีประสบการณ์และอยากจะพัฒนาฝีมือให้สูงขึ้น เราเชื่อมั่นว่าการเรียนรู้การเขียนโปรแกรมควรมาพร้อมกับการฝึกฝนและคำแนะนำที่เหมาะสม สนใจเรียนรู้เพิ่มเติม ติดต่อพวกเราที่ EPT ได้เลย!
ความสามารถในการเขียนโปรแกรมไม่ได้ถูกสร้างขึ้นในชั่วข้ามคืน แต่ด้วยความมุ่งมั่นและการฝึกฝนที่ถูกต้อง คุณจะกลายเป็นผู้เชี่ยวชาญได้ไม่ยาก ณ Expert-Programming-Tutor เป้าหมายของเราคือการปูทางให้นักเรียนเข้าถึงความรู้ที่แท้จริงในโลกของการเขียนโปรแกรม มาร่วมเดินทางในโลกแห่งโค้ดกับเรา แล้วคุณจะพบกับความเป็นไปได้ที่ไม่มีที่สิ้นสุด!
บทความนี้เป็นเพียงการแนะนำเบื้องต้นของการใช้ JSON ทำงานร่วมกับ Go และ JavaScript ซึ่งวิชาการและการปฏิบัติจริงสามารถเจาะลึกได้มากกว่านี้ หากคุณมีความอยากรู้อยากเห็นในการแก้ไขปัญหาทางเทคนิคต่างๆ และต้องการทดลองสัมผัสโลกแห่งการเขียนโปรแกรมด้วยตัวเอง, EPT คือสถานที่ที่จะช่วยให้คุณกระโจนเข้าสู่โลกนั้นได้ง่ายและสนุกยิ่งขึ้น ติดต่อเราเพื่อเริ่มต้นการเรียนรู้การเขียนโปรแกรมพร้อมๆ กัน!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากเจอข้อผิดพลาด หรือต้องการพูดคุย ติดต่อได้ที่ https://m.me/expert.Programming.Tutor/
Tag ที่น่าสนใจ: json go golang javascript rest_api web_service http_protocol struct front-end_development back-end_development web_development programming communication marshalling unmarshalling
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com