Chapter 3 ถึงเวลาสร้าง RESTful API Server กันแล้ว

สืบเนื่องจากตอนที่แล้วถ้าทำการติดตั้งโปรแกรมที่จำเป็นครบหมดทุกโปรแกรมแล้ว ในตอนนี้เราจะพูดถึงการเขียนโค้ดสร้าง RESTful API Server กัน โดยเริ่มจาก

  1. สร้าง folder งานของเราไว้ใน ..\xampp\htdocs ในที่นี้ทางผู้เขียนจะยกตัวอย่างโฟลเดอร์ชื่อ shopkeeper
  2. สร้างหน้า index.php ไว้ใน ..\xampp\htdocs\shopkeeper\public ใส่เนื้อหานี้ลงไป

3. สร้างไฟล์ชื่อ .htaccess ในโฟลเดอร์ public แล้วใส่เนื้อหานี้ลงไป

4. เข้าไปที่โฟลเดอร์ ..\xampp\apache\conf\extra แล้วหาไฟล์ที่ชื่อ httpd-vhost.conf เอาเครื่องหมายคอมเม้น (#) หน้า NameVirturlHost *:80 ออก

4.1 ถ้าต้องการเข้าถึงไฟล์ได้ง่ายๆ โดยไม่ต้องพิมพ์ยาวๆ ให้ทำการ config เพิ่มลงไปตามรูปด้านล่างนี้

5. สร้าง ip ให้กับ path ของเรา โดยการเข้าไปที่ c\windows\system32\driver\etc หาไฟล์ที่ชื่อ hosts เพิ่ม 127.0.0.1 ตามด้วยชื่อ server เข้าไป

6. สร้างไฟล์ชื่อ Customer.php ใน ..\xampp\htdocs\shopkeeper\src\route เพิ่มเนื้อหาตามนี้

ต่อไปเราจะมาสร้างในส่วนของฟังก์ชั่นการทำงานกับดาต้าเบสหลักๆของเรากัน ได้แก่

  1. Get All Customers
    เพิ่ม function Get All Customer ในไฟล์ Customer.php เขียนโค้ดตามรูปด้านล่างได้เลยค่ะ

1.1 จากนั้นให้สร้างไฟล์ชื่อ db.php ในโฟลเดอร์ config เพื่อทำการเชื่อมต่อฐานข้อมูลของเรา ให้ใส่เนื้อหาด้านในไว้ดังนี้

1.2 เพิ่ม require ‘../src/config/db.php’; ลงในไฟล์ index.php

1.3 ทดสอบโดยการพิมพ์ shopkeeper/api/customers ในช่อง url ใน browser จะเห็นผลลัพธ์เป็น JSON Array ดังนี้ (ถ้ามีข้อมูลในฐานข้อมูลแล้ว)

1.4 เปิด RestEasy ขึ้นมากรอก shopkeeper/api/customers ตรงช่อง URL แล้วกด send ดู ถ้าขึ้นด้านล่างถือว่าโอเค (200 (OK))

2. Get Single Customer

2.1 เพิ่ม function Get Single Customer ใน Customer.php เพิ่มเนื้อหาด้านใน function ดังนี้

สังเกตตรง $sql = “SELECT * FROM customer_contact WHERE id=$id”; ที่่เป็น SQL เราสามารถเลือกได้ว่าจะทำการ query ข้อมูลจาก attribute ไหน ในที่นี้เราเลือก query จาก id ถ้าต้องการให้ query จาก attribute อื่นสามารถแก้ไขได้จากบรรทัดนี้

2.2 ทดสอบด้วย RestEasy เหมือนเดิม แต่คราวนี้ให้เพิ่ม id ที่เราต้องการ query ด้วย เช่นต้องการ query จากไอดี 2 ให้ใส่ /2 ตามหลัง shopkeeper/api/customers ได้ผลดังนี้

3. Add Customer

3.1 สร้าง function Add Customer ใน Customer.php การเพิ่มข้อมูลจะใช้ Post แทนการ Get โดยเราต้องใส่ให้ครบว่าจะต้องมีการเพิ่มข้อมูลใน Attribute ไหนของเราบ้าง

3.2 ทดสอบโดยใช้ RestEasy ในช่อง URL ให้ใส่เป็น http://shopkeeper/api/customers/add เปลี่ยนจาก Get เป็น Post method เพิ่มส่วน Header ให้เป็น Name : Content-Type , Value: application/json กด save

3.3 ใส่ข้อมูลที่จะเพิ่มลงไปในฐานข้อมูลในรูปแบบของ JSON object

3.4 กด send แล้วดูผลลัพธ์ที่ได้ดังนี้ แสดงว่าโอเคแล้ว สามารถเข้าไปดูข้อมูลที่เราเพิ่มได้จากในฐานข้อมูล

4.Update Customer

4.1 สร้าง function Update Customer ในไฟล์ Customer.php การแก้ไขข้อมูลจะใช้ Put method สังเกตให้ดีว่า มีการเพิ่ม $id = $request->getAttribute(‘id’); ขึ้นมา และในโค้ด sql ส่วน WHERE id = $id คือการแก้ไขข้อมูลโดยอ้างอิงผ่าน id

4.2 ทดสอบโดยใช้ RestEasy ในช่อง URL ให้ใส่เป็น http://shopkeeper/api/customers/update/idที่เราต้องการเปลี่ยนแปลงข้อมูล เลือก method เป็น Put เพิ่มส่วน Header ให้เป็น Name : Content-Type , Value: application/json กด save กรอกข้อมูลที่เราต้องการแก้ไขในส่วนของ body ข้อมูลไหนที่ไม่ต้องการแก้ไขก็ให้คงไว้แบบเดิม แล้วกด send

4.3 ถ้าได้ผลดังแสดงข้างล่างถือว่าโอเคแล้ว ให้เข้าไปตรวจสอบในฐานข้อมูลด้วยว่าข้อมูลมีการ update หรือไม่

5. Delete Customer

5.1 สร้าง function Delete Customer ในไฟล์ Customer.php มีเนื้อหาเป็นดังต่อไปนี้ ในที่นี้จะลบข้อมูลชุดไหนออกจะถูกอ้างอิงจาก id สามารถเปลี่ยนไปใช้ Attribute อื่นตามเหมาะสมได้

5.2 ทดสอบบน RestEasy โดยการเลือก method เป็น Delete กรอก URL ให้ถูกต้องตามที่กำหนดไว้ใน Delete function ในส่วนของ ฺBody ต้องไม่มีข้อมูลใดๆ จากนั้นกด send แล้วดูผลลัพธ์ ถ้าแสดงดังด้านล่างถือว่าใช้ได้แล้ว เข้าไปดูข้อมูลในฐานข้อมูลด้วยว่าข้อมูลที่ต้องการลบหายไปหรือไม่

เพียงเท่านี้เราก็สามารถสร้าง RESTful API Web Server ของเราได้แล้ว ในตอนหน้าเราจะพาทุกท่านไปดูในส่วนของการนำไปใช้ในฝั่งของ client แล้วพบกันใหม่นะคะ