Dashboard
Usage Guide

Mock API Server — คู่มือการใช้งาน

เปิด mock API จริงให้ frontend เรียกใช้ได้ทันที โดยไม่ต้องรอ backend และไม่ต้องมีฐานข้อมูล

เว็บนี้เป็นทั้ง Dashboard (จัดการ endpoint) และ Mock API จริง ในตัวเดียว. ทุกคนที่เปิดเว็บจะได้ workspace ส่วนตัว แยกกันด้วย token จึงใช้ร่วมกันหลายคนบน deployment เดียวได้ และแชร์ชุด API กันด้วยไฟล์ JSON

1Quick Start — เริ่มใช้งานใน 3 นาที

  1. กด Add endpoints แล้วเลือกสร้างเอง, import spec หรือเชื่อม repository
  2. คัดลอกค่า Copy .env ไปใส่ใน frontend
  3. เลือก endpoint แล้วกด Send เพื่อตรวจว่า mock ตอบตามที่ตั้งไว้
  4. ถ้า response ไม่ตรง schema ให้กด Fix with AI → วาง error/schema → Preview → Apply & Test
ต้องการเริ่มเร็วที่สุด: เชื่อม repository → ตรวจ badge Schema matched → Import → เปลี่ยน Base URL ของ frontend

2Repository Import — อ่าน route, request และ response จากโค้ด

  1. กด Add endpoints → Connect repository → Choose repository
  2. Chrome จะแสดง permission dialog ของ browser ให้กด Allow เพื่ออนุญาตแบบ read-only หน้าต่างนี้เป็นระบบความปลอดภัยของ Chrome เว็บเปลี่ยนหน้าตาไม่ได้
  3. Mockbase scan ในเครื่องเพื่อหา HTTP calls, route constants และ import graph โดยข้าม node_modules, Git history, build, coverage และ assets
  4. ระบบตาม route ไปยัง service/hook แล้วอ่าน TypeScript interface/type และ Zod schema เพื่อสร้าง request/response
Schema matched
พบ schema และสร้าง shape ได้
Partial
พบ usage แต่ schema ยังไม่ครบ
Generic
พบ route อย่างเดียว ใช้ response เริ่มต้น

เมื่อ endpoint มีอยู่แล้ว

  • Merge missing fields — ค่าเริ่มต้น เก็บ mock เดิมและเติมสิ่งที่ขาด
  • Keep current unchanged — ข้าม endpoint ที่ซ้ำ
  • Replace with imported — ใช้ข้อมูลใหม่ แต่รักษา endpoint ID เดิม

3AI Mock Tools — Generate, Enrich และ Fix

AI Generate — สร้าง response ใหม่จาก request และ response ปัจจุบัน พร้อม preview ก่อนใช้
AI Enrich — ขั้นเสริมในหน้า import เลือกได้สูงสุด 5 endpoint เพื่อเพิ่มข้อมูลสมจริง; endpoint ที่ Schema matched import ได้โดยไม่ต้องใช้ AI
Fix with AI — วาง validation error, TypeScript interface, Zod schema หรือตัวอย่าง response แล้วระบบเติม field ที่ขาดและเปลี่ยนเฉพาะส่วนที่ชนิดผิด
Safe workflow: Generate preview → ตรวจ diff → Apply & Test → reload frontend เพื่อตรวจ schema parser → ใช้ Undo AI change หากผลไม่ถูกต้อง

AI ส่งเฉพาะ endpoint/context ที่เลือก ไม่ส่งทั้ง repo; cache ช่วยลดการเรียกซ้ำและ token cost

4Privacy & Troubleshooting

ข้อมูลและความเป็นส่วนตัว

  • สิทธิ์ repository เป็น read-only; Mockbase ไม่เขียน ลบ commit หรือ push
  • ไฟล์ถูก scan ใน browser ก่อนเลือก source ที่เกี่ยวข้องสูงสุด 60 ไฟล์
  • อย่าเก็บ API keys/secrets ใน source; ใช้ไฟล์ environment ที่ถูก ignore และหมุน key ทันทีหากเคยเผยแพร่
  • workspace และ AI cache เก็บฝั่ง server ใน .mockbase-data ซึ่งถูก ignore จาก Git

ปัญหาที่พบบ่อย

อ่าน totalItems ไม่ได้ — response ไม่มี pagination หรือ data ผิดชนิด; ใช้ Fix with AI พร้อมวาง schema error

Endpoint มาไม่ครบ — ตรวจว่าไฟล์ route/service ไม่อยู่ใน directory ที่ถูกข้าม และดูจำนวน scanned files ใน preview

Generic badge — ระบบพบ path แต่ตาม schema ไม่ถึง; เลือก AI Enrich หรือ Fix with AI เฉพาะเส้นนั้น

Groq rate limit/JSON failed — import แบบ static ยังใช้ได้; รอ quota reset หรือลด endpoint ที่ enrich ต่อรอบ

404 — ตรวจ token, method, path และว่า endpoint เปิด Serving อยู่

5URL ของ Mock API คุณ (ใช้บน prod ได้เลย)

เปิดเว็บครั้งแรก ระบบสร้าง token ให้อัตโนมัติ URL ส่วนตัวของคุณคือ (คัดลอกไปใช้ได้ทันที):

/mock/<token>

URL นี้อ้างอิงจากโดเมนที่คุณกำลังเปิดอยู่จริง — เปิดหน้านี้บนเว็บที่ deploy แล้ว มันจะแสดงโดเมน production ให้เอง (เช่น https://your-app.onrender.com/mock/…)

6Workspace & token

  • token เก็บในเบราว์เซอร์ของคุณ (localStorage) — คนอื่นเปิดเว็บเดียวกันจะได้คนละ token ไม่ชนกัน
  • ตั้งชื่อ token เองได้ (เช่น my-team) โดยคลิกแก้ที่แถบ URL บนสุดของ Dashboard เพื่อให้จำง่ายและแชร์ทีมได้
  • เปลี่ยน token = เปลี่ยน URL — endpoint ชุดเดิมจะย้ายไปที่ workspace ใหม่ให้อัตโนมัติ

7เชื่อมกับ Frontend

กดปุ่ม Copy .env บนแถบ URL ของ Dashboard แล้ววางลงในโปรเจกต์ frontend:

NEXT_PUBLIC_API_BASE_URL=/mock/<token>

จากนั้นเรียก API ได้ตามปกติ — CORS เปิดไว้ให้แล้ว ยิงจาก origin ไหนก็ได้:

const base = process.env.NEXT_PUBLIC_API_BASE_URL;
await fetch(`${base}/api/products`);   // → ได้ข้อมูล mock ทันที

8สร้าง / แก้ไข Endpoint

  • Import ไฟล์สเปค — ลาก/วางไฟล์ .csv .xlsx ลงกล่อง Import ระบบแปลงเป็น endpoint ให้อัตโนมัติ (รองรับ Excel หลายชีต)
  • เพิ่มเอง — กดปุ่ม มุมขวาบน แล้วแก้ path / method / response
  • หลาย response — ในแท็บ Response คลิก pill เพื่อสลับ response ที่เสิร์ฟ, + Add เพิ่ม, Edit แก้ JSON
  • Generate ข้อมูลอัตโนมัติ — ปุ่ม Generate ในแท็บ Response สร้าง mock ให้ตามรูปทรง response (ปรับจำนวนแถวได้ที่ช่อง rows)
  • Generate all (list → detail) — ถ้าเป็น detail endpoint (เช่น /business-units/:bu_id) ที่มีลิสต์คู่กัน ปุ่มจะเปลี่ยนเป็น Generate all (N) — สร้างข้อมูลครบทุก id ในลิสต์ พอคลิกเข้าไปแต่ละรายการก็มีข้อมูลของตัวเองครบ ไม่ซ้ำกัน
  • ทดสอบ error — เติม ?__status=404 ท้าย URL เพื่อบังคับคืน response สถานะนั้น
  • เปิด/ปิด — สลับ Toggle หน้า endpoint (ปิดแล้วคืน 404 ทันที)
  • ลบ — ชี้ที่ endpoint ในลิสต์แล้วกดไอคอนถังขยะ หรือกดปุ่ม Delete ในแผงรายละเอียดทางขวา

ทุกการแก้ไขเซฟอัตโนมัติ (ในเบราว์เซอร์ + sync ขึ้น server) ไม่ต้องกด Save

9แท็บ Config — คู่มือทุกช่อง (สำหรับคนเข้ามาใหม่)

แท็บ Config คือที่ตั้งค่า พฤติกรรม ของ endpoint ที่เลือกอยู่ · เปิดได้จากแผงขวา คลิกที่ endpoint แล้วกดแท็บ Config · ด้านล่างไล่อธิบาย ทุกช่องจากบนลงล่าง ว่าคืออะไรและกรอกยังไง

อยากทำอะไร → ไปที่ช่องไหน
• เปลี่ยน method / path → Endpoint
• ปิด endpoint ชั่วคราว (คืน 404) → Serving
• จำลอง network ช้า → Latency
• ค้นหา / แบ่งหน้า / เรียง ข้อมูลในลิสต์ → List query
• ตอบคนละ response ตามเงื่อนไข (เช่น 200/401) → Conditional responses
• ให้ POST/PUT บันทึกลง endpoint อื่น (เช่นโผล่ใน GET) → Write-through

1) Endpoint (Method + Path)

ช่องซ้ายเลือก method (GET/POST/…) ช่องขวาคือ path · ใช้ :ชื่อ สำหรับ path param เช่น /business-units/:id · ถ้ามี gateway prefix เช่น /bff/pcp ระบบจับให้เองไม่ต้องใส่

2) Full URL

URL เต็มของ endpoint นี้ (มี token ต่อท้ายให้แล้ว) กดไอคอนคัดลอกเอาไปยิงทดสอบ/แปะให้ frontend ได้เลย

3) Serving (เปิด/ปิด)

สลับ Toggle · On = เสิร์ฟตามปกติ, Off = endpoint นี้คืน 404 ทันที (ไว้ทดสอบตอน API ยังไม่พร้อม โดยไม่ต้องลบทิ้ง)

4) Latency (ms)

หน่วงเวลาก่อนตอบ (มิลลิวินาที) · ใส่ 2000 = ตอบช้า 2 วินาที ไว้ทดสอบ loading state / spinner ของหน้าจอ

5) List query — ค้นหา / เรียง / แบ่งหน้า

เปิด Toggle เพื่อให้ response array ถูกกรอง/แบ่งหน้าจาก query จริง (ปิด = คืน array เต็ม) · แต่ละช่อง:

Collectiondot-path ไปยัง array ใน response เช่น data (ว่าง = ทั้ง body เป็น array)
Paginationdot-path ไปยัง object ที่จะเขียน page/pageSize/totalItems/totalPages เช่น pagination (ว่าง = ไม่เขียน)
Search paramชื่อ query ที่เก็บคำค้น เช่น search → ใช้กับ ?search=xxx
Search fieldsfield ที่จะเอาคำค้นไปเทียบ คั่นด้วย comma เช่น id, nameTh, nameEn — เจอใน field ใดก็ติด (ว่าง = ค้นทุก field)
Page paramชื่อ query ของเลขหน้า เช่น page
Size paramชื่อ query ของจำนวนต่อหน้า เช่น size หรือ pageSize
Default sizeจำนวนต่อหน้าเมื่อ request ไม่ส่งมา (เช่น 10)
Sort-by paramชื่อ query ของ field ที่ใช้เรียง เช่น sortBy
Sort-dir paramชื่อ query ของทิศทาง asc/desc เช่น sortDir

เปิด Toggle ครั้งแรกระบบเดาค่าให้อัตโนมัติ — แค่แก้ Search fields ให้ตรง · ดูตัวอย่างเต็มที่หัวข้อ “List query”

6) Conditional responses (Rules)

ให้ endpoint ตอบคนละ response variant ตามเงื่อนไขของ request · กด Add rule แล้วตั้ง:

If all match, serveเลือก response variant ที่จะเสิร์ฟเมื่อกฎนี้ตรง (ต้องสร้าง variant ไว้ในแท็บ Response ก่อน)
ช่องที่ 1 (source)อ่านค่าจากไหน: query / body / header / path param
ช่องที่ 2 (key)ชื่อ key เช่น role, หรือ dot-path ใน body เช่น user.role
ช่องที่ 3 (operator)equals / not equals / contains / greater than / less than / exists / is absent
valueค่าที่ใช้เทียบ (operator exists/is absent ไม่ต้องใส่)
+ add conditionเพิ่มเงื่อนไขในกฎเดียวกัน — ต้องเป็นจริง ทุกข้อ (AND)

หลายกฎเช็คบนลงล่าง เจอตัวแรกที่ตรงชนะ · ไม่ตรงเลย → เสิร์ฟ response ที่ active · Rules ไม่ได้กรองรายการในลิสต์ (การค้นหาให้ใช้ List query) · ดูตัวอย่างที่หัวข้อ “Conditional Response”

7) Write-through (เฉพาะ POST / PUT / PATCH)

ให้ทุกครั้งที่ยิงสำเร็จ นำ body ที่ส่งมา บันทึกลง response ของ endpoint อื่น — เช่น POST สร้างข้อมูลแล้วไปโผล่ใน GET ที่ list · เปิด Toggle แล้วตั้ง:

Targetendpoint ปลายทางที่จะถูกอัปเดต (มักเป็น GET ที่ list ข้อมูล)
ModeUpsert = หาตัวที่ตรงแล้วเขียนทับ ไม่เจอก็เพิ่ม · Append = ต่อท้ายลิสต์ · Merge = รวมลงใน object
Match by(เฉพาะ Upsert) field ที่ใช้จับคู่ record เช่น id หรือ bu_id
Pathdot-path ไปยัง array/object ในปลายทาง (ว่าง = ระบบเดาให้ / root)

ทำให้ mock ทำตัวเหมือนมีฐานข้อมูลจริง — สร้าง/แก้แล้วเห็นผลใน list ทันที

10คืนค่าตาม Request — ตัวแปร {{ }} ใน Response

ใส่ ตัวแปร ลงไปในค่าของ response JSON ได้เลย (แก้ที่แท็บ Response → Edit) แล้วระบบจะแทนที่ด้วยค่าจริงจาก request ตอนถูกเรียก — ใช้ได้ทุก method รวมถึง GET (ไม่จำเป็นต้องมี request body):

  • {{query.ชื่อ}} — ค่าจาก query string เช่น ?type=A
  • {{body.ชื่อ}} — ค่าจาก request body (เจาะลึกได้ เช่น {{body.user.name}})
  • {{header.ชื่อ}} — ค่าจาก request header (ไม่สนตัวพิมพ์เล็ก/ใหญ่)
  • {{param.ชื่อ}} — ค่าจาก path param เช่น /users/:id

ตัวอย่าง — response ที่ตั้งไว้แบบนี้:

{
  "userId": "{{param.id}}",
  "keyword": "{{query.q}}",
  "greeting": "สวัสดีคุณ {{body.name}}",
  "limit": "{{body.limit}}"
}

เมื่อยิง POST /users/42?q=phone พร้อม body {"name":"เอ","limit":10} จะได้:

{
  "userId": "42",
  "keyword": "phone",
  "greeting": "สวัสดีคุณ เอ",
  "limit": 10
}

เกร็ด: ถ้าทั้งช่องเป็นตัวแปรตัวเดียว (เช่น "{{body.limit}}") จะคง ชนิดข้อมูลจริงจาก body ให้ (ได้เลข 10 ไม่ใช่ "10", รวมถึง object/array/boolean) · ส่วน query / param / header มาจาก URL/HTTP จึงเป็น ข้อความ (string) เสมอ · ตัวแปรที่อยู่ปนกับข้อความจะกลายเป็นสตริง · ถ้าหาค่าไม่เจอ จะทิ้ง {{...}} ไว้ให้เห็น (จะได้รู้ว่าพิมพ์ผิด)

หมายเหตุ: สำหรับ POST / PUT / PATCH ระบบยัง merge body ที่ส่งมา ลงใน response ให้อัตโนมัติอยู่แล้ว (field ที่ส่งมาจะทับ/เพิ่มลงในผลลัพธ์) — ตัวแปร {{ }} ไว้ใช้เมื่ออยากจัดวางค่าลงตำแหน่งที่ต้องการเอง

11Conditional Response — ตอบต่างกันตามเงื่อนไข (Rules)

อยากให้ endpoint เดียว ตอบคนละแบบ ตาม request เช่น ?role=admin ให้ข้อมูลเต็ม, ไม่มี token ให้ 401 — ทำได้ที่แท็บ Config → Conditional responses

  • ไปที่แท็บ Response สร้าง response variant ให้ครบก่อน (เช่นตัว Success 200 กับตัว Unauthorized 401) — ต้องมีอย่างน้อย 2 ตัว
  • ไปแท็บ Config → หัวข้อ Conditional responses → กด Add rule
  • ตั้งเงื่อนไข: เลือกแหล่ง (query / body / header / path param), ใส่ชื่อ key, เลือกตัวเทียบ (equals, contains, exists, ...) และค่า
  • เลือกว่า ถ้าเงื่อนไขครบ ให้เสิร์ฟ response ตัวไหน
  • กด add condition เพื่อเพิ่มเงื่อนไขในกฎเดียว (ต้องเป็นจริง ทุกข้อ = AND)
ตัวอย่างชุดกฎ (เช็คบนลงล่าง เจอตัวแรกที่ตรงชนะ):
• ถ้า header authorization is absent → เสิร์ฟ Unauthorized · 401
• ถ้า query role equals admin → เสิร์ฟ Admin data · 200
• ถ้า query page gt 99 → เสิร์ฟ Empty · 200

ถ้าไม่มีกฎไหนตรง จะเสิร์ฟ response ที่ active อยู่ (แท็บ Response) ตามปกติ · ยังใช้ ?__status=404 บังคับสถานะทับทุกกฎได้เหมือนเดิม · ผสมกับตัวแปร {{ }} ในหัวข้อก่อนหน้าได้ (เลือก variant ด้วยกฎ แล้วเติมค่าจาก request ด้วยตัวแปร)

12ตำราตัวอย่าง — ก็อปไปใช้ได้ทุกแบบ (Cookbook)

ตัวอย่างจริงครบทุกกรณี — ทำ 3 ขั้นตามนี้ในแต่ละ endpoint: (1) ตั้ง Request, (2) วาง Response ที่แท็บ Response → Edit, (3) กด Send เพื่อดูผล · จำไว้ว่า {{ }} ใส่ที่ Response เท่านั้น ส่วน Request Body เป็น JSON ธรรมดา

A. GET ธรรมดา — คืนค่าคงที่
1 · Request (สิ่งที่ frontend ส่งไป)
GET/business-units
2 · Response ที่ตั้งไว้ (แท็บ Response → Edit)
{
  "total": 2,
  "data": [
    { "id": 1, "name": "สำนักงานใหญ่" },
    { "id": 2, "name": "สาขาเหนือ" }
  ]
}
3 · ผลลัพธ์ที่ได้กลับมา
{
  "total": 2,
  "data": [
    { "id": 1, "name": "สำนักงานใหญ่" },
    { "id": 2, "name": "สาขาเหนือ" }
  ]
}

GET ไม่ต้องมี Body — ตั้ง Request Body เป็น none ได้เลย

B. GET + ค้นหา/แบ่งหน้า — สะท้อนค่า query กลับไป
1 · Request (สิ่งที่ frontend ส่งไป)
GET/business-units?search=Central&page=1&pageSize=10
2 · Response ที่ตั้งไว้ (แท็บ Response → Edit)
{
  "keyword": "{{query.search}}",
  "page": "{{query.page}}",
  "pageSize": "{{query.pageSize}}",
  "data": []
}
3 · ผลลัพธ์ที่ได้กลับมา
{
  "keyword": "Central",
  "page": "1",
  "pageSize": "10",
  "data": []
}

ค่าจาก query เป็นข้อความ (string) เสมอ จึงได้ “1” ไม่ใช่ 1

C. GET รายตัวด้วย path param — /:id
1 · Request (สิ่งที่ frontend ส่งไป)
GET/business-units/42
2 · Response ที่ตั้งไว้ (แท็บ Response → Edit)
{
  "id": "{{param.id}}",
  "name": "หน่วยธุรกิจ {{param.id}}",
  "active": true
}
3 · ผลลัพธ์ที่ได้กลับมา
{
  "id": "42",
  "name": "หน่วยธุรกิจ 42",
  "active": true
}

endpoint path ต้องเป็น /business-units/:id — ชื่อหลัง : คือชื่อที่ใช้ใน {{param.id}}

D. POST สร้างข้อมูล — body ถูก merge ให้อัตโนมัติ
1 · Request (สิ่งที่ frontend ส่งไป)
POST/business-units
Body (แท็บ Request → Body → raw · JSON → Save):
{
  "name": "สาขาใหม่",
  "code": "BU-99"
}
2 · Response ที่ตั้งไว้ (แท็บ Response → Edit)
{
  "id": 100,
  "status": "created"
}
3 · ผลลัพธ์ที่ได้กลับมา
{
  "id": 100,
  "status": "created",
  "name": "สาขาใหม่",
  "code": "BU-99"
}

POST / PUT / PATCH: field ทุกตัวใน Request Body จะถูกเติมเข้า response ให้เอง โดยไม่ต้องเขียน {{ }}

E. PUT / PATCH แก้ไข — จัดตำแหน่งค่าเองด้วย {{body.x}}
1 · Request (สิ่งที่ frontend ส่งไป)
PUT/business-units/42
Body (แท็บ Request → Body → raw · JSON → Save):
{
  "name": "แก้ชื่อแล้ว"
}
2 · Response ที่ตั้งไว้ (แท็บ Response → Edit)
{
  "id": "{{param.id}}",
  "name": "{{body.name}}",
  "updated": true
}
3 · ผลลัพธ์ที่ได้กลับมา
{
  "id": "42",
  "name": "แก้ชื่อแล้ว",
  "updated": true
}

ผสม param จาก URL กับ body ในผลลัพธ์เดียวได้

F. อ่านค่าจาก Header — เช่น token
1 · Request (สิ่งที่ frontend ส่งไป)
GET/profile
2 · Response ที่ตั้งไว้ (แท็บ Response → Edit)
{
  "authHeader": "{{header.authorization}}",
  "role": "user"
}
3 · ผลลัพธ์ที่ได้กลับมา
{
  "authHeader": "Bearer abc.xyz",
  "role": "user"
}

ส่ง header Authorization: Bearer abc.xyz · ชื่อ header ไม่สนตัวพิมพ์เล็ก/ใหญ่

G. Conditional — ไม่มี token คืน 401, มี admin คืนข้อมูลเต็ม
1 · Request (สิ่งที่ frontend ส่งไป)
GET/data (+ ตั้ง Rules ในแท็บ Config)
2 · Response ที่ตั้งไว้ (แท็บ Response → Edit)
// ต้องมี 2 response variants:
//   Default · 200  →  { "tier": "default" }
//   Unauthorized · 401  →  { "error": "no token" }
// Rules (Config tab):
//   ถ้า header x-token is absent → เสิร์ฟ Unauthorized · 401
3 · ผลลัพธ์ที่ได้กลับมา
GET /data              → 401 { "error": "no token" }
GET /data (x-token: a) → 200 { "tier": "default" }

ดูวิธีตั้ง Rules ละเอียดที่หัวข้อ “Conditional Response” · ใช้ร่วมกับ {{ }} ได้

H. ทดสอบหน้าจอ error โดยไม่ต้องตั้งอะไร
1 · Request (สิ่งที่ frontend ส่งไป)
GET/business-units?__status=500
2 · Response ที่ตั้งไว้ (แท็บ Response → Edit)
// ไม่ต้องแก้อะไร — แค่เติม ?__status=<เลขสถานะ> ท้าย URL
// ระบบจะคืน response variant ที่มีสถานะนั้น (ถ้ามี)
3 · ผลลัพธ์ที่ได้กลับมา
HTTP 500  (ใช้ทดสอบ error state ของ frontend)

เติมได้ทุก endpoint · ถ้าไม่มี variant สถานะนั้น จะคืน body เดิมแต่เปลี่ยนเลขสถานะให้

13List query — ค้นหา / แบ่งหน้า / เรียง จริง

ตัวแปร {{query.search}} แค่ สะท้อนค่ากลับ ไม่ได้กรองข้อมูล · ถ้าอยากให้ mock ค้นหา / แบ่งหน้า / เรียงลำดับ array จริง ตาม query (เหมือน API หลังบ้านจริง) ให้เปิด List query ที่แท็บ Config

  • ตั้ง response ให้มี array (เช่นใน data) และ object pagination ตามปกติ
  • ไปแท็บ Config → หัวข้อ List query → เปิด Toggle (ระบบเดาค่าให้อัตโนมัติ: search/page/size/sortBy/sortDir, collection = data, pagination = pagination)
  • แก้ Search fields ให้เป็น field ที่อยากให้ค้น เช่น buCode, nameTh (คั่นด้วย comma)
  • ปรับชื่อ query param ให้ตรงกับที่ frontend ส่งจริง (เช่นบางที่ใช้ size บางที่ pageSize)

ตัวอย่าง — response ที่ตั้งไว้:

{
  "data": [
    { "id": 3041, "buCode": "CRCCC", "nameTh": "เซ็นทรัล รีเทล..." },
    { "id": 2,    "buCode": "0401",  "nameTh": "บริษัท เซ็นทรัล ฟู้ด..." },
    { "id": 3,    "buCode": "0601",  "nameTh": "บริษัท ซีอาร์ซี ไทวัสดุ..." }
    // ...รวม 60 รายการ
  ],
  "pagination": { "page": 1, "pageSize": 10, "totalItems": 60, "totalPages": 6 }
}

เมื่อยิง GET /business-units?search=CRC&page=1&size=10 (Search fields = buCode, nameTh) จะได้เฉพาะที่ตรง และ pagination อัปเดตตามจำนวนที่กรองได้จริง:

{
  "data": [
    { "id": 3041, "buCode": "CRCCC", "nameTh": "เซ็นทรัล รีเทล..." }
  ],
  "pagination": { "page": 1, "pageSize": 10, "totalItems": 1, "totalPages": 1 }
}

ค้นหาแบบ substring ไม่สนตัวพิมพ์เล็ก/ใหญ่ · ถ้าค้นแล้วไม่เจอเลย จะได้ data: [] และ totalItems: 0 (ไม่ใช่คืนมาทั้งหมดเหมือนก่อน) · ?sortBy=buCode&sortDir=desc เรียงลำดับให้ · ใช้ร่วมกับ Rules / ตัวแปร {{ }} ได้ · ปิด Toggle เมื่อไหร่ก็กลับไปคืน array เต็มเหมือนเดิม

14Export / Import — แชร์ให้เพื่อน

ส่งให้เพื่อน
  • กดปุ่ม Export มุมขวาบน
  • ได้ไฟล์ mock-api-spec.json
  • ส่งไฟล์ให้เพื่อนทางแชต/อีเมล
รับจากเพื่อน
  • ลากไฟล์ .json ลงกล่อง Import
  • ระบบ รวม เข้ากับของที่มีอยู่
  • path+method ซ้ำจะใช้ conflict strategy ที่เลือก: merge, keep หรือ replace

15ปุ่มบนแถบเครื่องมือ (มุมขวาบน)

เปิดหน้าคู่มือนี้ (Guide)
สลับธีม สว่าง / มืด (จำค่าที่เลือกไว้ให้)
เพิ่ม endpoint ใหม่
Export สเปคทั้งหมดเป็นไฟล์ JSON
Reset กลับเป็น endpoint ตัวอย่างเริ่มต้น
เปิด / ปิดใช้งาน endpoint ทั้งหมดพร้อมกัน