DEV Community

Mastering Fundamental Golang : Building RESTAPI Project

1.การประกาศตัวแปร
การประกาศตัวแปรใน Go ใช้คำว่า var ตามด้วยชื่อและประเภทของตัวแปร
คำอธิบาย: ตัวแปรใน Go จะต้องมีประเภทที่ชัดเจน ซึ่งช่วยให้การจัดการข้อมูลมีประสิทธิภาพ
ตัวอย่าง:

var x int = 10  // ตัวแปร x ประเภท int มีค่าเป็น 10
var name string = "Go"  // ตัวแปร name ประเภท string มีค่าเป็น "Go"
Enter fullscreen mode Exit fullscreen mode

2.Formatting
การจัดรูปแบบข้อมูลใน Go ใช้แพ็กเกจ fmt
คำอธิบาย: ฟังก์ชันในแพ็กเกจ fmt ช่วยให้สามารถพิมพ์ข้อมูลในรูปแบบที่ต้องการได้

import "fmt"
fmt.Printf("Hello, %s!", name)  // แสดงข้อความ "Hello, Go!"
Enter fullscreen mode Exit fullscreen mode

3.Zero Value
ค่าเริ่มต้นของตัวแปรที่ไม่ได้กำหนดค่า
คำอธิบาย: Go จะให้ค่าที่เป็นค่าเริ่มต้นสำหรับประเภทต่าง ๆ เช่น 0 สำหรับ int และ "" สำหรับ string
ตัวอย่าง:

var a int     // ค่าเริ่มต้นคือ 0
var b string  // ค่าเริ่มต้นคือ ""

Enter fullscreen mode Exit fullscreen mode

4.เงื่อนไข
การใช้ if และ else เพื่อตรวจสอบเงื่อนไข
คำอธิบาย: การควบคุมการทำงานของโปรแกรมตามเงื่อนไขที่กำหนด
ตัวอย่าง:

if x > 5 {
    fmt.Println("x is greater than 5")  // ถ้า x มากกว่า 5 จะพิมพ์ข้อความนี้
} else {
    fmt.Println("x is less than or equal to 5")  // ถ้าไม่ใช่ จะพิมพ์ข้อความนี้
}
Enter fullscreen mode Exit fullscreen mode

5.Switch Case
การใช้ switch เพื่อเปรียบเทียบหลายกรณี
คำอธิบาย: ช่วยให้การตรวจสอบค่าหลาย ๆ ค่าทำได้ง่ายขึ้น
ตัวอย่าง:

switch day {
case "Monday":
    fmt.Println("Start of the week")
case "Friday":
    fmt.Println("End of the week")
default:
    fmt.Println("Midweek")
}
Enter fullscreen mode Exit fullscreen mode

6.Function
การสร้างฟังก์ชันเพื่อทำงานเฉพาะ
คำอธิบาย: ฟังก์ชันช่วยให้โค้ดมีการจัดระเบียบและนำกลับมาใช้ใหม่ได้
ตัวอย่าง:

func add(a int, b int) int {
    return a + b  // คืนค่าผลรวมของ a และ b
}
Enter fullscreen mode Exit fullscreen mode

7.Array
การเก็บข้อมูลในลำดับที่มีขนาดคงที่
คำอธิบาย: Array สามารถเก็บข้อมูลที่มีประเภทเดียวกันได้
ตัวอย่าง:

var arr [5]int  // ประกาศ Array ที่สามารถเก็บค่า int ได้ 5 ตัว
arr[0] = 1      // กำหนดค่าให้กับตำแหน่งที่ 0
Enter fullscreen mode Exit fullscreen mode

8.Loop
การทำซ้ำโดยใช้ for
คำอธิบาย: ใช้สำหรับการทำงานซ้ำตามจำนวนรอบที่กำหนด
ตัวอย่าง:

for i := 0; i < 5; i++ {
    fmt.Println(i)  // พิมพ์ค่า i ตั้งแต่ 0 ถึง 4
}
Enter fullscreen mode Exit fullscreen mode

9.Slice
การจัดการข้อมูลแบบลำดับที่มีขนาดยืดหยุ่น
คำอธิบาย: Slice เป็นโครงสร้างข้อมูลที่สามารถขยายขนาดได้
ตัวอย่าง:

slice := []int{1, 2, 3}  // ประกาศ Slice ที่เก็บค่า int
Enter fullscreen mode Exit fullscreen mode

10.Structure
การสร้างข้อมูลที่มีหลายฟิลด์
คำอธิบาย: Structure ช่วยในการจัดระเบียบข้อมูลที่เกี่ยวข้องกัน
ตัวอย่าง:

type Person struct {
    Name string
    Age  int
}
Enter fullscreen mode Exit fullscreen mode

11.Method
ฟังก์ชันที่ถูกแนบกับโครงสร้าง
คำอธิบาย: Method ช่วยให้สามารถทำงานกับข้อมูลในโครงสร้างได้
ตัวอย่าง:

func (p Person) Greet() {
    fmt.Println("Hello, my name is", p.Name)  // แสดงข้อความทักทาย
}
Enter fullscreen mode Exit fullscreen mode

12.Pointer
การเก็บที่อยู่ของตัวแปร
คำอธิบาย: Pointer ช่วยในการจัดการหน่วยความจำและส่งข้อมูลโดยไม่ต้องคัดลอก
ตัวอย่าง:

var ptr *int
ptr = &x  // ptr เก็บที่อยู่ของ x
Enter fullscreen mode Exit fullscreen mode

13.Interface
การกำหนดพฤติกรรม
คำอธิบาย: Interface ช่วยในการกำหนดว่าฟังก์ชันใดที่ต้องมีในโครงสร้างต่าง ๆ
ตัวอย่าง:

type Shape interface {
    Area() float64  // กำหนดฟังก์ชัน Area ที่ต้องมีในโครงสร้างที่ใช้ Interface นี้
}
Enter fullscreen mode Exit fullscreen mode

14.การจัดการ JSON
ใช้ encoding/json package สำหรับการแปลงข้อมูลเป็น JSON
คำอธิบาย: JSON เป็นรูปแบบข้อมูลที่ใช้ในการส่งข้อมูลระหว่างโปรแกรม
ตัวอย่าง:

jsonData, _ := json.Marshal(person)  // แปลงโครงสร้าง person เป็น JSON
Enter fullscreen mode Exit fullscreen mode

15.การสร้าง REST API ใน Go

  1. ติดตั้ง Go ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Go บนเครื่องของคุณแล้ว สามารถดาวน์โหลดได้จาก golang.org
  2. สร้างโปรเจกต์ใหม่ สร้างโฟลเดอร์ใหม่สำหรับโปรเจกต์ของคุณ:
bash
mkdir go-rest-api
cd go-rest-api
Enter fullscreen mode Exit fullscreen mode
  1. สร้างไฟล์หลัก สร้างไฟล์ main.go และเปิดไฟล์นั้นในโปรแกรมแก้ไขที่คุณชื่นชอบ
  2. เขียนโค้ด REST API เพิ่มโค้ดดังต่อไปนี้ใน main.go:
package main

import (
    "encoding/json"
    "fmt"
    "net/http"
)

// Struct สำหรับจัดการข้อมูล
type Person struct {
    ID   int    `json:"id"`
    Name string `json:"name"`
}

// สร้างข้อมูลตัวอย่าง
var people = []Person{
    {ID: 1, Name: "John Doe"},
    {ID: 2, Name: "Jane Doe"},
}

// ฟังก์ชันสำหรับการจัดการคำขอ GET
func getPeople(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(people)
}

// ฟังก์ชันหลัก
func main() {
    http.HandleFunc("/people", getPeople) // กำหนดเส้นทางสำหรับคำขอที่ /people

    fmt.Println("Server is running on port 8080...")
    http.ListenAndServe(":8080", nil) // เริ่มเซิร์ฟเวอร์
}
Enter fullscreen mode Exit fullscreen mode
  1. อธิบายโค้ด Struct Person: ใช้เพื่อเก็บข้อมูลของบุคคล มีฟิลด์ ID และ Name Slice people: เก็บข้อมูลตัวอย่างของบุคคล getPeople function: ฟังก์ชันนี้จัดการคำขอ GET ที่เส้นทาง /people โดยจะส่งข้อมูลบุคคลในรูปแบบ JSON main function: ตั้งค่าเซิร์ฟเวอร์ให้ฟังที่พอร์ต 8080 และกำหนดเส้นทางสำหรับคำขอ
  2. ทดสอบ REST API รันโปรแกรม:
bash
go run main.go
Enter fullscreen mode Exit fullscreen mode

เปิดเว็บเบราว์เซอร์หรือใช้เครื่องมือเช่น Postman หรือ cURL เพื่อทดสอบ API:
GET http://localhost:8080/people
คุณควรจะเห็นผลลัพธ์ในรูปแบบ JSON:

[
    {"id":1,"name":"John Doe"},
    {"id":2,"name":"Jane Doe"}
]
Enter fullscreen mode Exit fullscreen mode
  1. ขยาย API คุณสามารถเพิ่มฟังก์ชันการทำงานเพิ่มเติม เช่น: POST เพื่อเพิ่มบุคคลใหม่ PUT เพื่อแก้ไขข้อมูลบุคคล DELETE เพื่อลบบุคคล ตัวอย่างการเพิ่มฟังก์ชันการทำงาน
// ฟังก์ชันสำหรับจัดการคำขอ POST
func addPerson(w http.ResponseWriter, r *http.Request) {
    var newPerson Person
    json.NewDecoder(r.Body).Decode(&newPerson)
    people = append(people, newPerson)
    w.WriteHeader(http.StatusCreated)
    json.NewEncoder(w).Encode(newPerson)
}
Enter fullscreen mode Exit fullscreen mode

// ในฟังก์ชัน main ให้เพิ่มเส้นทางใหม่

http.HandleFunc("/people", getPeople) // GET
http.HandleFunc("/people/add", addPerson) // POST
Enter fullscreen mode Exit fullscreen mode

Top comments (0)