Node.js เขียน REST API ด้วย LoopBack

powered-by-LB-med.png

เนื่องจากผมอยากลองเขียน REST ง่ายๆเอาไว้ลองกับงาน Side Project ดูครับ ส่วนตัวแล้วเคยจับ Express มาบ้างแบบน้อยนิด ซึ่งปกติก็ต้องมานั่งเขียน Route กันเองแล้วมาเช็ค Path เลยหา Framework อื่นดู ก็เจอว่ามีทั้ง Sails, Restify และอื่นๆ แต่ลองนึกดูเคยมีคนพูดถึง LoopBack ให้ผมฟัง ผมเลยลองมาใช้ตัวนี้ดีกว่า เพราะเห็นว่า IBM เป็นผู้สนับสนุนรายใหญ่ซึ่งจริงๆแล้วพัฒนาโดย StrongLoop

ก่อนอื่นเข้าไป official site https://loopback.io/ ก่อนเลย ก็เจอว่า Get Started ไม่มี Code ตัวอย่างเลยครับ งั้นมันทำงานยังไงกันนี่ เรามาลองดูกัน

ก่อนอื่นเท่าที่ผมเข้าใจ LoopBack เนี่ยจะใช้แนวคิดเรื่อง Model มากกว่าการ Route ซึ่งหมายความว่าการที่เราจะเพิ่ม API เข้าไป ก็จะเป็นการทำงานเกี่ยวข้องกับ Model (เหมือนกับการเขียน function handler ของ Model) เพราะหน้าที่การ Route นั้น LoopBack จัดการให้เราหมดแล้ว ผ่าน Express นั่นแหละ….

เริ่มแรกเราต้อง Install ตัว LoopBack ก่อนครับ (เป็น commandline interface – CLI)

$ npm install -g strongloop

หลักจากนั้นเราจะต้องทำการสร้าง Project จาก Template ครับด้วย

$ slc loopback

จากนั้นเราจะต้องทำการตั้งชื่อ Project เลือก Directory รวมถึงเลือก LoopBack version

create-proj.png
ผมตั้งชื่อว่า loopback-aro

สิ่งที่ได้คือ Folders และ ไฟล์ต่างๆหน้าตาแบบนี้โดยผมสร้าง Project แบบ api-server ฉะนั้นส่วนที่จะต้องแก้น่าจะทำใน Folder ชื่อ server

folder-struct.png

หลังจากนั้นเราก็ลองทำการสร้าง Model กันครับ เพราะอย่างที่ผมบอกไปข้างต้นว่า loopback นั้นใช้ Model driven ในการพัฒนา REST API

 

$ slc loopback:model

ผมจะสร้าง Model ง่ายๆใช้สำหรับเก็บข้อมูล user ละกันครับ ตัว CLI มันก็จะให้เราตอบไปว่าจะใช้ Feature อะไรของ LoopBack บ้าง เช่น

  • จะใช้ data-source แบบไหน (ค่าปกติคือ memory ซึ่งใช้สำหรับการ Dev เพราะไม่งั้นเราปิด server แล้วค่าจะถูกลบทิ้งครับ เพราะ memory ถูกคืนให้ OS)
  • ใช้ PersistedModel เพื่อทำใช้สามารถเก็บ Model เข้า database ได้ง่าย
  • ทำการเปิด REST API สำหรับ Model ตัวนี้
  • และ อื่นๆ

create-model.png

ที่นี้ผมก็จะสร้าง properties หรือ attibutes ของ user ครับ โดยที่มี

  • name เป็น string
  • score เป็น number

create-prop.png

เมื่อสร้างเสร็จแล้วเราก็จะเห็น Folder ชื่อ common ถูกสร้างขึ้นมารวมทั้งมี Subfolder ชื่อ Model ที่มีไฟล์ user.js/json ซึ่งตรงกับที่เราสร้างข้างต้น

common-folder.png

เราจะเห็นว่า

  • user.js คือ code javascript เปล่าๆ (ที่เอาไว้ให้เราเขียน logic สำหรับ expose REST API เพิ่ม)
  • user.json นั้นจะเป็นการประกาศพวก Properties ต่างๆ (หมายความว่าเราไม่ต้องใช้ CLI ในการสร้าง Model ก็ได้ถ้าเรารู้จักโครงสร้างของ Framework)

model-files.png

ที่นี้เราลองมารันดูครับ

node .

run.png

ลองเข้าผ่าน localhost:3000/explorer ดูก็จะพบว่ามี API Tool (หน้าตาเหมือน Swagger ให้เลยครับ)

explorer

เรามาลอง POST เพื่อสร้าง Model object ดีกว่า

anurocha-80.png

จะเห็นว่าหลังจากกดปุ่ม Try it out! ก็จะทำการยิง http request ไปที่ /api/user และได้รับ message ตอบรับว่า 200 และได้รับ id:1 เป็นค่า key

anurocha-res.png

ดังนั้นถ้าผมลอง GET ด้วย id :1 เราควรจะได้ object นี้กลับมากนะครับ ลองผ่าน Postman (ซึ่งเป็น Tool ที่ใช้ได้การส่ง HTTP request) กันดีกว่า

ได้ response ตามคาด!

get-postman.png

จะเห็นว่าการสร้าง REST API แบบง่ายๆด้วย LoopBack นี่ไม่ต้องเขียน Code เลยซักบรรทัด

แต่ความสามารถของ LoopBack ยังมีอีกเยอะ เช่นการ Extend API ให้ซับซ้อนยิ่งขึ้น การติดต่อกับ Data-source แบบอื่นๆเช่น MySQL หรือ MongoDB เจอกันคราวหน้าครับ 🙂
Notes:

เพิ่ม API อ่านต่อได้เลย

2 thoughts on “Node.js เขียน REST API ด้วย LoopBack”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s