เข้าใจ Stubby4j วิธีใช้งานและการสร้าง Stub Server

Jirawan.C
KBTG Life
Published in
3 min readJun 6, 2023

วันนี้จะพาทุกคนไปดูตัวอย่างการใช้งาน Stubby4j แบบง่ายๆ และรวดเร็ว สำหรับการจำลอง API กันค่ะ

หลายครั้งที่เราไม่ได้ทำงานคนเดียว ต้องมีการแบ่งทีม เขียนระบบหน้าบ้าน หลังบ้าน เมื่อมีฟีเจอร์ใหม่ที่จำเป็นต้องมี API มารองรับ ทีมจำเป็นต้องหาข้อตกลงร่วมกันเกี่ยวกับตัวอย่างของ Request Response ที่จะใช้รับ-ส่งกัน ตกลง HTTP Method ต่างๆ เช่น GET, POST, PUT, DELETE จำลอง Response Code ทั้งกรณีที่ Success และ Fail ตกลง Error ที่จะแสดงออกมาให้ผู้ใช้งาน พร้อมทั้งอธิบายกรณีต่างๆ (แค่ออกแบบก็วุ่นวายแล้วค่ะ) เมื่อตกลงกันได้ ก็อาจจะมีปัญหาที่ตามมา เช่น อีกฝ่ายต้องรอให้ Dev ให้เสร็จก่อน จึงจะทำงานได้ หรือมีการเข้าใจคลาดเคลื่อนกันระหว่างพัฒนา ไม่เป็นแบบที่คุยกันไว้นี่นา ;-;

Stubby4j คืออะไร

Stubby4j มาจากคำว่า Stub เป็น Stub Server ที่ใช้สำหรับการทดสอบและจำลองเซิร์ฟเวอร์ผ่าน HTTP / HTTPS เสมือนเป็น Server จริง ส่วนตัวเลข 4j ที่อาจจะแทนคำว่า “for Java” เนื่องจากถูกพัฒนาด้วยภาษา Java

Stubby จะมาช่วยจำลอง API Server ให้เราไม่ต้องรอกันและกัน เขียนเสร็จก่อนถึงจะ Implement ได้ ช่วยจำลองสถานการณ์ สามารถกำหนด URL ที่ต้องการ Request/ Response ต่างๆ เช่น JSON/XML เวลาที่ Server ใช้ในการประมวลผล แสดงข้อความ Error ให้เห็น เสมือนว่า API นั้นถูกเขียนเสร็จเรียบร้อยแล้ว แถมยังเขียนไม่ยาก มี Syntax ที่ตรงไปตรงมา และสามารถรันแบบ Java และ node.js ได้ด้วย Config เดียวกัน

เริ่มต้นใช้ Stubby4j แบบง่ายๆ

1. ดาวน์โหลดและติดตั้ง Stubby4j

npm install -g stubby

ถ้ายังไม่ได้ลง หรือหา npm (Node Package Manager) ไม่เจอ จะต้องลง npm ก่อนนะคะ สามารถดูข้อมูลเพิ่มเติมได้ที่ลิงก์นี้เลย

2. สร้างไฟล์ YAML หรือ JSON

เพื่อกำหนดค่าการทำงานของ Stubby4j โดยระบุการตั้งค่าของ Stubs ดังนี้

url เป็น ^/todos$ ซึ่งใช้ตัว ^ เพื่อตรวจสอบว่า URL เริ่มต้นด้วย /todos และตัว $ เพื่อตรวจสอบว่า URL ลงท้ายด้วย /todos เท่านั้น

method เป็น HTTP Method ต่างๆ เช่น GET, POST, PUT, DELETE

responseระบุค่าที่ต้องการส่งกลับไปหาผู้ใช้เมื่อ URL ตรงกัน

อธิบายเพิ่มเติม

  • description: ให้คำอธิบายเกี่ยวกับ API
  • url: ระบุรูปแบบ URL ที่ต้องการ
  • method: ระบุวิธี HTTP Method ที่ควรใช้
  • status: ตั้งค่ารหัสสถานะการตอบกลับ HTTP ในที่นี้ตั้งค่าเป็น 200 OK
  • latency: ระบุค่าที่ต้องการหน่วงเวลาที่ใช้ตอบกลับเป็นหน่วยมิลลิวินาที ในที่นี้ตั้งค่าเป็น 5000 หมายความว่าการตอบกลับจะมีการล่าช้าไป 5 วินาที (เผื่อเคสที่ต้องการให้ API ตอบกลับมาช้ามากๆ ค่ะ)
  • headers: กำหนด Content-Type เป็น application/json เพราะต้องการส่ง Response เป็น JSON Format กลับมา
  • file: ระบุ Path ของไฟล์ที่มีข้อมูลที่ต้องการ Response กลับไป ในที่นี้ตั้งค่าเป็น mock/todos.json หมายความว่าข้อมูลจะถูกอ่านจากไฟล์ todos.json

3. Start Stubby4j Server

// สำหรับ java
java -jar stubby4j.jar -d stubs.yaml

// สำหรับ node.js
stubby --data stubs.yaml

4. ทดสอบ Stub

เปิดบราวเซอร์ พิมพ์ URL ที่กำหนดไว้ใน Stubby4j หรือ ใช้ POSTMAN ทดสอบ

เลือกส่ง HTTP Method (GET, POST, PUT, DELETE)ให้ตรงกับที่เขียนไว้ด้วยนะ

The response time is determined by the specified latency in stubs.yaml
The response time is determined by the specified latency in stubs.yaml
The example of response create a todo 3

หวังว่าบทความนี้จะเป็นประโยชน์สำหรับทุกคนที่กำลังประสบปัญหาข้างต้นนะคะ อย่าลืมนำ Stubby ไปช่วยปรับปรุงกระบวนการทำงานของทีม ลดเวลารอกัน เพื่อให้เราสามารถพัฒนาและส่งต่อโปรดักส์ได้รวดเร็วและมีประสิทธิภาพมากขึ้น

หากคุณชอบบทความนี้ รบกวนกด “Claps” 👏 เพื่อเป็นกำลังใจให้ผู้เขียนผลิตบทความต่อไปด้วยนะคะ ขอบคุณค่ะ ^^

ข้อมูลเพิ่มเติม:

Source Code:

Reference:

สำหรับใครที่ชื่นชอบบทความนี้ อย่าลืมกดติดตาม Medium: KBTG Life เรามีสาระความรู้และเรื่องราวดีๆ จากชาว KBTG พร้อมเสิร์ฟให้ที่นี่ที่แรก

--

--

Jirawan.C
KBTG Life

Hi, My name's JUGJIG. I working as a software engineer @Fintech company. I’m Go developer since 2020. I’m English learner. Nice to see you