HTTP Methods: GET, POST, PUT, DELETE คืออะไร?
ในบทที่แล้ว เราได้เรียนรู้เกี่ยวกับ REST และแนวคิดพื้นฐานของ RESTful API ในบทนี้ เราจะมาเจาะลึก HTTP Methods ซึ่งเป็นหัวใจสำคัญของการทำงานกับ RESTful API HTTP Methods เหล่านี้เป็นคำสั่งที่บอก Server ว่า Client ต้องการทำอะไรกับ Resource นั้นๆ โดย HTTP Methods ที่ใช้บ่อยที่สุดคือ GET, POST, PUT และ DELETE
HTTP Methods คืออะไร?
HTTP Methods (หรือบางครั้งเรียกว่า HTTP Verbs) คือคำสั่งที่ส่งไปพร้อมกับ HTTP Request เพื่อระบุการกระทำที่ Client ต้องการให้ Server ทำกับ Resource ที่ระบุใน URL ตัวอย่างเช่น Client อาจต้องการ:
- ดึงข้อมูล (GET)
- สร้างข้อมูลใหม่ (POST)
- แก้ไขข้อมูลที่มีอยู่ (PUT)
- ลบข้อมูล (DELETE)
การใช้ HTTP Methods อย่างถูกต้องตามหลักการ RESTful API จะช่วยให้ API ของเรามีความชัดเจน, เข้าใจง่าย และง่ายต่อการบำรุงรักษา
GET คืออะไร?
GET เป็น Method ที่ใช้สำหรับดึงข้อมูลจาก Server โดยการระบุ URL ของ Resource ที่ต้องการ ตัวอย่างเช่น หากเราต้องการดึงข้อมูลของ Blog Post ที่มี ID เท่ากับ 1 เราจะส่ง HTTP Request ด้วย Method GET ไปยัง URL /posts/1
ลักษณะสำคัญของ GET:
- Read-Only:
GETไม่ควรทำการเปลี่ยนแปลงข้อมูลใดๆ บน Server - Idempotent: การเรียก
GETหลายครั้งติดต่อกัน ควรให้ผลลัพธ์เหมือนเดิมเสมอ (ถ้าไม่มีการเปลี่ยนแปลงข้อมูลบน Server) - Safe:
GETไม่ควรมีผลข้างเคียงใดๆ ต่อ Server - Cacheable: Response จาก
GETสามารถ Cache ได้ เพื่อเพิ่มประสิทธิภาพ - ข้อมูลใน Request: โดยทั่วไป
GETจะส่งข้อมูลเพิ่มเติมผ่านทาง Query Parameters ใน URL (เช่น/posts?author=john&sort=date)
ตัวอย่าง (สมมติว่าเรามี API endpoint ที่ /posts/1):
GET /posts/1 HTTP/1.1
Host: api.example.com
Response ตัวอย่าง (JSON):
{
"id": 1,
"title": "My First Blog Post",
"content": "This is the content of my first blog post.",
"author": "John Doe"
}
POST คืออะไร?
POST เป็น Method ที่ใช้สำหรับสร้าง Resource ใหม่บน Server โดยข้อมูลที่ต้องการสร้างจะถูกส่งไปใน Request Body ตัวอย่างเช่น หากเราต้องการสร้าง Blog Post ใหม่ เราจะส่ง HTTP Request ด้วย Method POST ไปยัง URL /posts พร้อมกับข้อมูลของ Blog Post ใน Request Body
ลักษณะสำคัญของ POST:
- Create:
POSTใช้เพื่อสร้าง Resource ใหม่ - Non-Idempotent: การเรียก
POSTหลายครั้งติดต่อกัน อาจสร้าง Resource หลายรายการ - ข้อมูลใน Request: ข้อมูลที่ต้องการสร้างจะถูกส่งไปใน Request Body (เช่น JSON, XML, Form Data)
- Response: โดยทั่วไป Server จะตอบกลับด้วย HTTP Status Code
201 Createdพร้อมกับ URL ของ Resource ที่สร้างขึ้นใหม่ใน HeaderLocation
ตัวอย่าง (สมมติว่าเรามี API endpoint ที่ /posts):
POST /posts HTTP/1.1
Host: api.example.com
Content-Type: application/json
{
"title": "My Second Blog Post",
"content": "This is the content of my second blog post.",
"author": "Jane Doe"
}
Response ตัวอย่าง:
HTTP/1.1 201 Created
Location: /posts/2
PUT คืออะไร?
PUT เป็น Method ที่ใช้สำหรับแก้ไข Resource ที่มีอยู่แล้วบน Server โดยข้อมูลที่ต้องการแก้ไขจะถูกส่งไปใน Request Body ตัวอย่างเช่น หากเราต้องการแก้ไข Blog Post ที่มี ID เท่ากับ 1 เราจะส่ง HTTP Request ด้วย Method PUT ไปยัง URL /posts/1 พร้อมกับข้อมูลที่ต้องการแก้ไขใน Request Body
ลักษณะสำคัญของ PUT:
- Update/Replace:
PUTใช้เพื่อแก้ไข Resource ที่มีอยู่แล้ว โดยจะแทนที่ข้อมูลเดิมทั้งหมดด้วยข้อมูลใหม่ที่ส่งมา - Idempotent: การเรียก
PUTหลายครั้งติดต่อกัน ควรให้ผลลัพธ์เหมือนเดิมเสมอ (ถ้าไม่มีการเปลี่ยนแปลงข้อมูลอื่นบน Server) - ข้อมูลใน Request: ข้อมูลที่ต้องการแก้ไขจะถูกส่งไปใน Request Body (เช่น JSON, XML, Form Data)
- Response: โดยทั่วไป Server จะตอบกลับด้วย HTTP Status Code
200 OKหรือ204 No Content
ตัวอย่าง (สมมติว่าเรามี API endpoint ที่ /posts/1):
PUT /posts/1 HTTP/1.1
Host: api.example.com
Content-Type: application/json
{
"title": "My Updated Blog Post",
"content": "This is the updated content of my blog post.",
"author": "John Doe"
}
Response ตัวอย่าง:
HTTP/1.1 200 OK
DELETE คืออะไร?
DELETE เป็น Method ที่ใช้สำหรับลบ Resource ที่มีอยู่แล้วบน Server โดยการระบุ URL ของ Resource ที่ต้องการลบ ตัวอย่างเช่น หากเราต้องการลบ Blog Post ที่มี ID เท่ากับ 1 เราจะส่ง HTTP Request ด้วย Method DELETE ไปยัง URL /posts/1
ลักษณะสำคัญของ DELETE:
- Delete:
DELETEใช้เพื่อลบ Resource ที่มีอยู่แล้ว - Idempotent: การเรียก
DELETEหลายครั้งติดต่อกัน ควรให้ผลลัพธ์เหมือนเดิมเสมอ (แม้ว่า Resource จะถูกลบไปแล้วก็ตาม) - ข้อมูลใน Request: โดยทั่วไป
DELETEจะไม่ส่งข้อมูลเพิ่มเติมใน Request Body - Response: โดยทั่วไป Server จะตอบกลับด้วย HTTP Status Code
200 OKหรือ204 No Content
ตัวอย่าง (สมมติว่าเรามี API endpoint ที่ /posts/1):
DELETE /posts/1 HTTP/1.1
Host: api.example.com
Response ตัวอย่าง:
HTTP/1.1 204 No Content
สรุป
HTTP Methods เป็นเครื่องมือสำคัญสำหรับการสร้าง RESTful API ที่ดี การเข้าใจความหมายและการใช้งานของ GET, POST, PUT และ DELETE จะช่วยให้เราออกแบบ API ที่มีความชัดเจน, เข้าใจง่าย และง่ายต่อการบำรุงรักษา ในบทต่อไป เราจะมาเรียนรู้เกี่ยวกับ Endpoint และวิธีการออกแบบ Endpoint ที่ดี