DEV Community

Cover image for วิธีทดสอบกับ API จำลอง และสร้าง API ปลอมใช้เองเมื่อจำเป็น
Thanawat Wongchai
Thanawat Wongchai

Posted on • Originally published at apidog.com

วิธีทดสอบกับ API จำลอง และสร้าง API ปลอมใช้เองเมื่อจำเป็น

เมื่อคุณสร้าง frontend, ดีบัก client หรือทดลองไลบรารี HTTP ใหม่ คุณมักต้องมี endpoint ที่คืนค่า JSON หน้าตาเหมือนข้อมูลจริงโดยไม่ต้องตั้ง backend เอง Dummy API ช่วยให้คุณเรียกใช้ API สาธารณะฟรีได้ทันที คู่มือนี้สรุป Dummy API ที่น่าใช้ วิธีเรียกใช้งานในโค้ด และจุดที่ควรเปลี่ยนไปสร้าง Fake REST API ของคุณเอง หากต้องการพื้นฐานเพิ่มเติมเกี่ยวกับการเรียก API ด้วย JavaScript ให้อ่านคู่มือ MDN: Using Fetch API ประกอบได้

ลองใช้ Apidog วันนี้

Dummy API คืออะไร

Dummy API คือบริการที่โฮสต์ endpoint พร้อมข้อมูล JSON ตัวอย่างไว้ให้แล้ว เช่น ผู้ใช้ โพสต์ สินค้า ตะกร้าสินค้า หรือรายการ todo คุณไม่ต้องสมัครบัญชี ไม่ต้อง deploy backend และไม่ต้องกลัวทำข้อมูลจริงเสียหาย

โดยทั่วไป Dummy API รองรับ HTTP method หลัก ๆ เช่น:

  • GET
  • POST
  • PUT
  • PATCH
  • DELETE

แต่ต้องเข้าใจก่อนว่า request แบบเขียนข้อมูลมักเป็นการจำลองเท่านั้น เช่น POST แล้ว API อาจคืน object พร้อม id ใหม่กลับมา แต่ไม่ได้บันทึกข้อมูลถาวรจริง

ใช้ Dummy API เมื่อคุณต้องการ:

  • ทดสอบการเรียก HTTP request
  • สร้าง prototype frontend
  • ทดลอง state loading/error ใน UI
  • เรียนรู้ fetch, Axios หรือ HTTP client ตัวใหม่

ไม่ควรใช้เมื่อคุณต้องการ:

  • schema ของข้อมูลที่ควบคุมเอง
  • state ที่บันทึกจริง
  • error case ที่กำหนดเอง
  • mock ที่ตรงกับ OpenAPI spec ของโปรเจกต์

Dummy และ Fake API ฟรีที่ใช้ทดสอบได้ทันที

API ด้านล่างใช้ฟรีและไม่ต้องตั้งค่า backend จากฝั่งคุณ

1. JSONPlaceholder

JSONPlaceholder เป็น Dummy API คลาสสิกสำหรับข้อมูลแนว blog และ social content โดยมี resource หลัก เช่น:

  • posts
  • comments
  • albums
  • photos
  • todos
  • users

เหมาะกับการทดสอบการดึงข้อมูลแบบมีความสัมพันธ์ เช่น post กับ comments หรือ album กับ photos

ลองเรียก endpoint:

curl https://jsonplaceholder.typicode.com/posts/1
Enter fullscreen mode Exit fullscreen mode

ตัวอย่าง JavaScript:

const res = await fetch('https://jsonplaceholder.typicode.com/posts/1');
const post = await res.json();

console.log(post.title);
Enter fullscreen mode Exit fullscreen mode

หากส่ง POST /posts ระบบจะคืน id ปลอม เช่น 101 แต่ข้อมูลจะไม่ถูกบันทึกถาวร

curl -X POST https://jsonplaceholder.typicode.com/posts \
  -H "Content-Type: application/json" \
  -d '{"title":"Hello","body":"Test post","userId":1}'
Enter fullscreen mode Exit fullscreen mode

2. DummyJSON

DummyJSON มี resource หลากหลายกว่า เหมาะกับ UI ที่ใกล้เคียงแอปจริง เช่น e-commerce หรือ auth flow

มีข้อมูลตัวอย่าง เช่น:

  • products
  • carts
  • users
  • posts
  • comments
  • quotes
  • todos
  • recipes

ลองเรียกข้อมูลสินค้า:

curl https://dummyjson.com/products/1
Enter fullscreen mode Exit fullscreen mode

ตัวอย่าง frontend:

const res = await fetch('https://dummyjson.com/products/1');
const product = await res.json();

console.log(product.title, product.price);
Enter fullscreen mode Exit fullscreen mode

DummyJSON ยังมี endpoint สำหรับ auth ที่คืน token ให้ใช้ฝึก flow การ login ได้:

const res = await fetch('https://dummyjson.com/auth/login', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    username: 'emilys',
    password: 'emilyspass',
  }),
});

const data = await res.json();
console.log(data.accessToken);
Enter fullscreen mode Exit fullscreen mode

เหมาะสำหรับทดลอง:

  • login form
  • token storage
  • authenticated request
  • product list
  • cart UI

3. reqres.in

reqres.in เหมาะกับการทดสอบ request/response lifecycle เช่น:

  • list users
  • single user
  • register
  • login
  • delayed response
  • pagination

ข้อควรระวัง: free tier ต้องส่ง header API key:

x-api-key: reqres-free-v1
Enter fullscreen mode Exit fullscreen mode

ตัวอย่าง:

curl https://reqres.in/api/users/2 \
  -H "x-api-key: reqres-free-v1"
Enter fullscreen mode Exit fullscreen mode

ตัวอย่าง JavaScript:

const res = await fetch('https://reqres.in/api/users/2', {
  headers: {
    'x-api-key': 'reqres-free-v1',
  },
});

const data = await res.json();
console.log(data.data.email);
Enter fullscreen mode Exit fullscreen mode

เลือก Dummy API ให้เหมาะกับงาน

Dummy API เหมาะสำหรับ การยืนยันตัวตน การคงอยู่ของการเขียน
JSONPlaceholder การอ่านข้อมูลแบบซ้อนกัน, ข้อมูลแนว blog ไม่มี จำลอง, ไม่บันทึก
DummyJSON e-commerce, cart, login flow มี token จำลอง, ไม่บันทึก
reqres.in pagination, register/login demo API key header จำลอง, ไม่บันทึก

ถ้าต้องการตัวเลือกมากกว่านี้ อ่านต่อได้ที่ Public API สำหรับการทดสอบ และ รายชื่อ Free Public API สำหรับนักพัฒนา ซึ่งเหมาะเมื่อคุณต้องการข้อมูลเฉพาะหัวข้อ เช่น สภาพอากาศ สกุลเงิน หรือข้อมูลสาธารณะอื่น ๆ

วิธีเรียกใช้ Dummy API ในโค้ด

การเรียก Dummy API เหมือนเรียก HTTP endpoint ปกติ ตัวอย่างด้านล่างใช้ fetch เพื่ออ่านข้อมูลผู้ใช้และส่งข้อมูลผู้ใช้ใหม่

// Read
const res = await fetch('https://dummyjson.com/users/1');
const user = await res.json();

console.log(user.firstName);

// Write: API จะ echo กลับมา แต่ไม่ persist จริง
const created = await fetch('https://dummyjson.com/users/add', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    firstName: 'Ada',
    lastName: 'Lovelace',
  }),
});

const result = await created.json();
console.log(result); // object พร้อม fake id
Enter fullscreen mode Exit fullscreen mode

ถ้าใช้ Python กับ requests:

import requests

r = requests.get("https://jsonplaceholder.typicode.com/todos/1")
print(r.json())
Enter fullscreen mode Exit fullscreen mode

เพิ่ม error handling เพื่อให้โค้ดใกล้ production มากขึ้น:

async function getProduct(id) {
  const res = await fetch(`https://dummyjson.com/products/${id}`);

  if (!res.ok) {
    throw new Error(`Request failed: ${res.status}`);
  }

  return res.json();
}

try {
  const product = await getProduct(1);
  console.log(product.title);
} catch (err) {
  console.error(err.message);
}
Enter fullscreen mode Exit fullscreen mode

หากต้องการข้อมูลทดสอบที่ดูเหมือนข้อมูลจริง เช่น ชื่อ อีเมล timestamp หรือ field เฉพาะ อ่าน คู่มือการสร้างข้อมูลทดสอบ API ที่สมจริง

เมื่อ Public Dummy API ไม่เพียงพอ

Public Dummy API ใช้งานเร็วมาก แต่จะเริ่มติดข้อจำกัดเมื่อโปรเจกต์มี requirement เฉพาะขึ้น เช่น:

  • schema ไม่ตรงกับแอปของคุณ

    แอปของคุณอาจต้องการ field อย่าง subscription_tier, billing.address หรือ permissions[] แต่ JSONPlaceholder มีแค่ posts, albums, users

  • ต้องการ state จริง

    ตะกร้าสินค้าควรอัปเดตหลังเพิ่มสินค้า แต่ Public Dummy API ส่วนใหญ่จะลืมข้อมูลทันทีหลัง response

  • ต้องการจำลอง error case

    เช่น 429 Too Many Requests, 500 Internal Server Error, response ช้า หรือ payload ผิดรูปแบบ

  • frontend เริ่มก่อน backend เสร็จ

    ทีม frontend ต้องการ endpoint ที่ตรงกับ API contract ปัจจุบัน ไม่ใช่ข้อมูลตัวอย่างที่ไม่เกี่ยวกับระบบจริง

เมื่อถึงจุดนี้ คุณควรสร้าง Fake API หรือ Mock API ที่ควบคุมเอง เพื่อให้ response ตรงกับ schema, behavior และ error case ของโปรเจกต์ อ่านเพิ่มเติมได้ที่ Mock API ที่สร้างขึ้นสำหรับการทดสอบ

วิธีสร้าง Fake API ของคุณเองด้วย Apidog

Apidog เป็นแพลตฟอร์ม API สำหรับออกแบบ ทดสอบ ดีบัก และทำ mocking ในที่เดียว จุดสำคัญคือ mock ถูกขับเคลื่อนด้วย schema จึงสามารถสร้างข้อมูลจำลองจากโครงสร้าง endpoint ได้อัตโนมัติ

ขั้นตอนแบบสั้นจาก เอกสาร Mock API Data in Apidog:

  1. สร้างหรือนำเข้า endpoint

    สร้าง API ใหม่ใน Apidog หรือนำเข้าไฟล์ OpenAPI/Swagger ที่มีอยู่

  2. กำหนด schema ของ response

    ระบุ field, type และโครงสร้างข้อมูล เช่น:

   {
     "id": 1,
     "email": "user@example.com",
     "createdAt": "2026-06-24T10:00:00Z",
     "price": 199
   }
Enter fullscreen mode Exit fullscreen mode
  1. ให้ smart mock สร้างข้อมูล

    Apidog สามารถสร้างค่าตามชื่อและชนิดของ field ได้ เช่น:

    • email → อีเมล
    • createdAt → timestamp
    • price → ตัวเลข
    • country → ชื่อประเทศ หากตั้ง rule ให้เหมาะสม
  2. เรียกใช้ mock URL

    เมื่อเปิด mock server แล้ว คุณสามารถเรียก endpoint จาก frontend, test script หรือ curl ได้เหมือนเรียก Public Dummy API

   curl https://your-mock-url.example.com/users/1
Enter fullscreen mode Exit fullscreen mode
  1. เพิ่ม conditional response และ error case ตั้งค่า mock ให้คืน response หลายแบบ เช่น:
    • 200 OK
    • 404 Not Found
    • 500 Internal Server Error
    • response delay
    • payload สำหรับ edge case

เพราะ mock ถูกสร้างจาก spec ของคุณ เมื่อ API design เปลี่ยน mock ก็อัปเดตตาม contract ได้ง่ายขึ้น หากต้องการดูรายละเอียดการ mock จาก OpenAPI schema อ่าน คำแนะนำการสร้างข้อมูล mock จาก OpenAPI Schemas

Public Dummy API เทียบกับ Apidog Mock

ความต้องการ Public Dummy API Apidog Mock
ต้องการ JSON เร็ว ๆ สำหรับทดลอง ดีมาก ดีมาก
schema ตรงกับโปรเจกต์ ไม่ ได้
custom error และ delay ไม่ ได้
ตรงกับ OpenAPI contract ไม่ ได้
เวลา setup แทบเป็นศูนย์ ไม่กี่นาที

แนวทางที่ใช้ได้จริงคือใช้ทั้งสองแบบ:

  • ใช้ Public Dummy API สำหรับทดลองเร็ว ๆ หรือเรียนรู้ HTTP client
  • ใช้ Apidog Mock เมื่อเริ่มทำฟีเจอร์จริงที่ต้องตรงกับ API contract

คำถามที่พบบ่อย

Dummy API เหมือนกับ Mock API หรือไม่?

ใกล้เคียงกันแต่ไม่เหมือนกันทั้งหมด Dummy API มักหมายถึง API สาธารณะที่มีข้อมูลตัวอย่างให้ใช้ร่วมกัน เช่น JSONPlaceholder ส่วน Mock API คือ API ที่คุณกำหนดเองเพื่อจำลอง schema และ behavior ของระบบคุณ

ถ้าต้องการรายละเอียดเพิ่มเติม อ่าน Mock API คืออะไร

Fake API ฟรีปลอดภัยสำหรับข้อมูลจริงหรือไม่?

ไม่ควรใช้กับข้อมูลจริง ห้ามส่งข้อมูลผู้ใช้จริง secret token หรือ credential ไปยัง Public Dummy API ให้ถือว่าทุกอย่างที่คุณส่งออกไปอาจถูกบันทึกหรือมองเห็นได้ ใช้เฉพาะข้อมูลทดสอบที่ไม่มีความลับเท่านั้น

Dummy API บันทึกข้อมูลที่ส่งไปหรือไม่?

โดยทั่วไปไม่บันทึกถาวร JSONPlaceholder, DummyJSON และ reqres.in อาจรับ POST, PUT หรือ PATCH แล้วคืน response พร้อม fake ID แต่ข้อมูลจะไม่ถูก persist จริง

ถ้าต้องการ state ที่คงอยู่ ต้องใช้ stateful mock หรือ backend จริง

สร้าง Fake API โดยไม่ต้องเขียนโค้ดได้ไหม?

ได้ ด้วย Apidog คุณสามารถกำหนด endpoint, schema และ mock response โดยไม่ต้องเขียน server เอง หรือจะนำเข้า OpenAPI file แล้วสร้าง mock endpoint จาก contract ที่มีอยู่ก็ได้

สรุป

Public Dummy API เช่น JSONPlaceholder, DummyJSON และ reqres.in เป็นวิธีที่เร็วที่สุดในการได้ JSON สำหรับ prototype, demo และการเรียนรู้ HTTP request แต่เมื่อคุณต้องการ schema ของตัวเอง state จริง หรือ error case ที่ควบคุมได้ ควรสร้าง Fake API หรือ Mock API ของโปรเจกต์เอง

Apidog ช่วยให้คุณนำเข้า spec, สร้าง mock จาก schema และเรียก endpoint ได้ในไม่กี่นาที ดาวน์โหลด Apidog เพื่อเปลี่ยน API contract ถัดไปของคุณให้เป็น mock ที่ใช้งานได้ก่อน backend พร้อมจริง

Top comments (0)