Screen Shot 2557-06-10 at 12.01.38 AM
มาทำความรู้จักกับ Spark ซึ่งเป็น micro web framework ( ไม่ใช่ Apache Spark นะครับ )
โดยได้รับแรงบันดาลใจมาจาก Sinatra
ทำให้สร้างระบบ web application ด้วยภาษา java ได้ง่าย และ รวดเร็ว
โดยส่วนที่สนใจคือ เราจะสร้าง RESTful web service ได้อย่างไร
มาดูกันดีกว่า ว่าใช้งานอย่างไร

Software Requirement

  • JDK 1.8
  • Apache maven

เริ่มต้นการศึกษาด้วย Hello World กันหน่อย ด้วย code จาก website ของ Spark

คำอธิบาย
ตัวอย่าง code นั้นใช้ lambda expression ใน java 8 ซึ่งอาจจะแปลกตาหน่อย แต่ code จะสวย
ทำการสร้าง service endpoint ให้เข้าใช้งาน /hello ผ่าน HTTP GET

หรือสามารถเขียนในรูปแบบปกติซึ่งเป็น anonymous class ดังนี้

ทำการ run แล้วสามารถเข้าใช้งานผ่าน url http://localhost:4567/hello ได้เลย

Screen Shot 2557-06-10 at 12.11.55 AM

เมื่อทุกอย่างเรียบร้อยแล้ว เรามาลองสร้าง RESTful web service ดีกว่า
โดยมีขั้นตอนการพัฒนาดังนี้

เริ่มจาก Model class สำหรับเก็บข้อมูลสินค้า ดังนี้

ต่อมาสร้าง Product Service สำหรับเตรียมการจัดการสินค้า เช่น 
การสร้างสินค้าใหม่
การดึงข้อมูลสินค้าทั้งหมด
การดึงข้อมูลสินค้าที่ต้องการ

จากนั้นสร้างส่วนของตัวจัดการ เพื่อกำหนด Routing สำหรับ endpoint ที่ต้องการ ใน ProductController
สามารถเขียนได้ 2 แบบคือ

1. เขียนแบบ Lambda expression

2. เขียนแบบปกติ ซึ่งใช้ Anonymous class


เมื่อสร้างเสร็จเรียบร้อยแล้ว ทำการสร้าง main class 
มี method main เพื่อเริ่มต้นการทำงานของระบบ


ทำการ run class Main แล้วสามารถทดสอบเข้าใช้งานผ่าน

  • http://localhost:4567/products ผ่าน HTTP GET เพื่อดึงข้อมูลสินค้าทั้งหมด
  • http://localhost:4567/product/<id> ผ่าน HTTP GET เพื่อดึงข้อมูลสินค้าตามรหัสที่ต้องการ
  • http://localhost:4567/product ผ่าน HTTP POST เพื่อสร้างข้อมูลสินค้าใหม่

รูปตัวอย่างการดึงข้อมูลสินค้าทั้งหมด

Screen Shot 2557-06-10 at 10.09.38 AM

ถ้าต้องการดักจับ exception ต่างๆ สามารถดักจับแบบง่ายๆ ดังนี้

เขียนแบบ Lambda

หรือเขียนแบบปกติ

หลังจากเมื่อลองใช้งาน แล้วพบว่า
การสร้าง RESTful web service ด้วย Spark
นั้นสร้างง่ายมากๆ รวมทั้งให้เราไปเน้นในส่วนการทำงานหลัก
เช่นส่วนของ Service หรือส่วนการจัดการข้อมูลของระบบ

ดังนั้น Spark คืออีกหนึ่งทางเลือกสำหรับ Micro web framework ครับ
ยิ่งพัฒนาด้วย Lambda  ใน Java 8 ด้วยแล้ว ยิ่งสวยและง่ายขึ้นเยอะครับ

ตัวอย่างของ code อยู่ที่ Github :: Up1 Demo Spark REST