メインコンテンツへ移動

เนื้อหาภาษาไทย / タイ語のコンテンツ

システムガイド 内容確認済み

การส่ง JSON Response กลับไป

บทนี้อธิบายถึงวิธีการส่งข้อมูลในรูปแบบ JSON กลับไปยัง Client ซึ่งเป็นขั้นตอนสำคัญในการสร้าง API ที่สมบูรณ์ โดยเน้นการตั้ง HTTP Header เป็น `application/json` ก่...

การส่ง JSON Response กลับไป

ในบทที่แล้ว เราได้เรียนรู้วิธีการสร้าง JSON string จากข้อมูล PHP ของเรา ในบทนี้ เราจะมาเรียนรู้วิธีการส่ง JSON string นั้นกลับไปยัง Client หรือผู้ที่เรียกใช้ API ของเรา ซึ่งเป็นขั้นตอนสำคัญในการสร้าง API ที่สมบูรณ์

ทำไมต้องส่ง JSON Response?

Client ที่เรียกใช้ API ของเรา (เช่น เว็บเบราว์เซอร์, แอปพลิเคชันมือถือ หรือ Server อื่นๆ) ต้องการข้อมูลในรูปแบบที่เข้าใจง่ายและสามารถนำไปใช้งานต่อได้ JSON เป็นรูปแบบข้อมูลที่ได้รับความนิยมอย่างมากเนื่องจาก:

  • อ่านง่าย: มีโครงสร้างที่ชัดเจนและเข้าใจได้ง่าย
  • รองรับหลายภาษา: สามารถใช้ได้กับภาษาโปรแกรมมิ่งหลากหลายภาษา
  • น้ำหนักเบา: มีขนาดเล็กกว่าเมื่อเทียบกับ XML ทำให้การรับส่งข้อมูลรวดเร็ว

ดังนั้น การส่ง JSON response กลับไปทำให้ Client สามารถนำข้อมูลไปแสดงผลหรือประมวลผลได้อย่างมีประสิทธิภาพ

การตั้ง Header เป็น application/json

ก่อนที่เราจะส่ง JSON string กลับไป เราต้องบอก Client ว่าข้อมูลที่เราส่งไปนั้นเป็น JSON โดยการตั้ง HTTP Header ที่ชื่อ Content-Type ให้มีค่าเป็น application/json การทำเช่นนี้จะช่วยให้ Client รู้ว่าจะต้องตีความข้อมูลที่ได้รับอย่างไร

ใน PHP เราสามารถตั้ง Header ได้โดยใช้ฟังก์ชัน header():

<?php
  header('Content-Type: application/json');
?>

เราต้องตั้ง Header นี้ก่อนที่จะส่งข้อมูลใดๆ ออกไป เพราะ Header จะถูกส่งไปก่อน Body ของ HTTP response

การส่ง JSON String

หลังจากที่เราได้ตั้ง Header เป็น application/json แล้ว เราก็สามารถส่ง JSON string ที่เราสร้างไว้ในบทที่แล้วกลับไปได้เลย โดยใช้ฟังก์ชัน echo หรือ print:

<?php
  header('Content-Type: application/json');

  $data = [
    'name' => 'John Doe',
    'age' => 30,
    'city' => 'New York'
  ];

  $json_string = json_encode($data);

  echo $json_string;
?>

ในตัวอย่างนี้ เราได้สร้าง array ชื่อ $data จากนั้นแปลงเป็น JSON string ด้วย json_encode() และสุดท้ายส่งกลับไปโดยใช้ echo เมื่อ Client ได้รับ response นี้ ก็จะสามารถตีความว่าเป็น JSON ได้ทันที

ตัวอย่างการส่ง JSON Response แบบเต็มรูปแบบ

ลองมาดูตัวอย่างแบบเต็มรูปแบบที่รวมการตั้ง Header และการส่ง JSON string:

<?php
  // กำหนด Header เป็น application/json
  header('Content-Type: application/json');

  // ข้อมูลที่จะส่งกลับ
  $response = [
    'status' => 'success',
    'message' => 'ข้อมูลถูกดึงเรียบร้อยแล้ว',
    'data' => [
      'id' => 123,
      'name' => 'Product A',
      'price' => 19.99
    ]
  ];

  // แปลงข้อมูลเป็น JSON string
  $json_response = json_encode($response);

  // ส่ง JSON response กลับไป
  echo $json_response;
?>

เมื่อ Client เรียกใช้ API endpoint นี้ จะได้รับ JSON response ที่มีโครงสร้างดังนี้:

{
  "status": "success",
  "message": "ข้อมูลถูกดึงเรียบร้อยแล้ว",
  "data": {
    "id": 123,
    "name": "Product A",
    "price": 19.99
  }
}

การจัดการ Error

การจัดการ Error เป็นสิ่งสำคัญอย่างยิ่งในการสร้าง API ที่ดี เพื่อให้ Client สามารถเข้าใจได้ว่าเกิดอะไรขึ้นหากมีข้อผิดพลาดเกิดขึ้น เราสามารถส่ง JSON response ที่มีข้อมูลเกี่ยวกับ Error กลับไปได้

ตัวอย่างการจัดการ Error:

<?php
  header('Content-Type: application/json');

  try {
    // สมมติว่ามี error เกิดขึ้นที่นี่
    throw new Exception('เกิดข้อผิดพลาดในการประมวลผล');

    $response = [
      'status' => 'success',
      'message' => 'การประมวลผลสำเร็จ'
    ];
  } catch (Exception $e) {
    // จับ error และสร้าง JSON response
    $response = [
      'status' => 'error',
      'message' => $e->getMessage()
    ];

    // ส่ง HTTP status code ที่เหมาะสม (เช่น 500 Internal Server Error)
    http_response_code(500);
  } finally {
    // แปลงข้อมูลเป็น JSON string และส่งกลับไป
    $json_response = json_encode($response);
    echo $json_response;
  }
?>

ในตัวอย่างนี้ เราใช้ try...catch block เพื่อจัดการ error หากเกิด exception ขึ้น เราจะสร้าง JSON response ที่มี status เป็น error และ message เป็นข้อความ error จาก exception นอกจากนี้ เรายังใช้ฟังก์ชัน http_response_code() เพื่อส่ง HTTP status code ที่เหมาะสม (ในที่นี้คือ 500 Internal Server Error) ซึ่งจะช่วยให้ Client เข้าใจว่าเกิด error ขึ้น

เมื่อเกิด error Client จะได้รับ JSON response ที่มีลักษณะดังนี้:

{
  "status": "error",
  "message": "เกิดข้อผิดพลาดในการประมวลผล"
}

และ HTTP status code จะเป็น 500

HTTP Status Codes ที่ควรรู้ (เบื้องต้น)

HTTP status codes เป็นรหัสตัวเลขที่ Server ส่งกลับมาพร้อมกับ response เพื่อบอกสถานะของการ request มีหลาย status codes ที่มีความหมายแตกต่างกัน แต่สำหรับ API development เราควรรู้จัก status codes พื้นฐานเหล่านี้:

  • 200 OK: Request สำเร็จ
  • 201 Created: ข้อมูลใหม่ถูกสร้างสำเร็จ (เช่น จากการ POST)
  • 204 No Content: Request สำเร็จ แต่ไม่มีข้อมูลที่จะส่งกลับ
  • 400 Bad Request: Request ไม่ถูกต้อง (เช่น ข้อมูลไม่ครบ)
  • 401 Unauthorized: ไม่ได้รับอนุญาตให้เข้าถึง (ต้องมีการ authentication)
  • 403 Forbidden: ไม่ได้รับอนุญาตให้เข้าถึง (authentication แล้ว แต่ไม่มีสิทธิ์)
  • 404 Not Found: ไม่พบ resource ที่ต้องการ
  • 500 Internal Server Error: เกิด error ที่ Server

การใช้ HTTP status codes ที่ถูกต้องจะช่วยให้ Client เข้าใจสถานะของ request ได้อย่างชัดเจน

ข้อควรระวัง

  • Encoding: ตรวจสอบให้แน่ใจว่า encoding ของไฟล์ PHP และข้อมูลที่ส่งกลับเป็น UTF-8 เพื่อรองรับภาษาไทยและภาษาอื่นๆ
  • Error Handling: อย่าละเลยการจัดการ error เพราะจะทำให้ Client ไม่สามารถเข้าใจสถานะของ request ได้
  • Security: ระมัดระวังเรื่อง security เช่น การ validate ข้อมูล input เพื่อป้องกัน SQL injection หรือ Cross-Site Scripting (XSS)

สรุป

ในบทนี้ เราได้เรียนรู้วิธีการส่ง JSON response กลับไปยัง Client ซึ่งเป็นขั้นตอนสำคัญในการสร้าง API ที่สมบูรณ์ เราได้เรียนรู้เกี่ยวกับการตั้ง Header เป็น application/json การส่ง JSON string การจัดการ error และ HTTP status codes ที่ควรรู้ ในบทต่อไป เราจะมาเรียนรู้วิธีการรับ JSON request จาก Client

Office.in.th Custom Service

この構成をもとにシステムを開発・カスタマイズしたいですか?

Office.in.th は、エンタープライズ Web アプリケーション、API 連携、官民の業務管理システムの設計・開発を承り、長期的なサポートも提供します。

ソフトウェア開発サービスを見る