REST

Posted by PunNeng, Sun Dec 24 12:07:00 UTC 2006

ผมตั้งใจจะเขียนถึง Simply Restful ที่เป็น plugin ของ Rails แต่ที่มาของมันนี่สิครับ ยาวหลายทอดเหลือเกิน เห็นว่ามันน่าสนใจดี เลยเอามาเล่าสู่กันฟัง

มาเริ่มกันที่ REST REST ย่อมาจาก Representational State Transfer ถูกสร้างขึ้นมาโดย Roy Fielding ตอนทำปริญญานิพนธ์ปริญญาเอกของเขา

แล้วมันคืออะไร มันเป็นแนวความคิดของสถาปัตยกรรม software เป็นแค่แนวนะครับ ทำไมต้องเป็น REST ? มาดูคำอธิบายจากที่นี่ดีก่า เขาอธิบายไว้ว่า

เว็บเนี่ย มันก็ประกอบกันไปด้วยทรัพยากร(resource ต่อไปผมจะใช้คำนี้ แทนคำว่าทรัพยากรนะครับ)ต่างๆ นานา resource อันนี้ หมายถึงสิ่งที่เรากำลังสนใจอยู่ เช่น โรงงานทำเครื่องบิน Boeing ได้กำหนดทรัพยากรของเครื่องรุ่น 747 คนใช้ ก็สามารถเข้าถึงได้ด้วย URL:

http://www.boeing.com/aircraft/747

เราก็จะได้ตัวแทน(representation)ของ resource นั้นๆ ออกมา ในที่นี้คงเป็นหน้า html ที่ระบุถึง resource ของมัน มันจะมองการกระทำของเราเป็น state ทีนี้ เมื่อเราเปลี่ยนหน้าเว็บ เช่น เข้าไปดูในหน้าต่างๆ ของเว็บนั้นๆ ก็จะทำการส่งตัวแทนมาใหม่อีก และทำการเปลี่ยน state ตัวใหม่ด้วย ดังนั้น การที่มันเปลี่ยน state ของมันนี่แหละ คือ Representational State Transfer

#$%@เข้ มันช่างซับซ้อนอะไรเช่นนี้ มาดูฝั่งเจ้าของแนวความคิดกันบ้าง เขาบอกประมาณว่า

Representational State Transfer มันถูกสร้างขึ้นมาเพื่อให้เห็นถึงรูปของการออกแบบพฤติกรรมของ web app ที่ดี หมายถึง ในหน้า page เนี่ย มันจะมี links ต่างๆ นานา เต็มไปหมด ให้ติ๊งต่างว่าเป็น state-machine จำลองละกัน เมื่อมีคนใช้มาทำการกด link ก็เสมือนว่ามันเป็นการเปลี่ยน state จิ้มทีก็เปลี่ยนที แล้วมันก็จะเปลี่ยนหน้าเว็บไปอีกหน้านึง ซึ่งมันก็คือ state ถัดไปที่มันจะต้องเปลี่ยนนั่นเอง

ข้อสรุปของไอ้เหน่ง ก็คือ มองมันให้เป็น state นั่นละครับ มีการกระทำทีนึง ก็เปลี่ยน state ทีนึง แต่แค่นี้มันจะเป็น REST หรอ มันต้องมีเงื่อนไขอะไรอีกต่างๆ นานา แต่มันก็ไม่เป็นมาตรฐาน ถึงขนาดต้องออก specification ของมันมา เพราะมันเป็นแค่แนวความคิด เราสามารถเขียนงานของเรา ให้ทำงานตามแนวนี้ได้ มันใช้ของพื้นๆ เช่น

  • HTTP
  • URL
  • XML/HTML/GIF/JPEG/etc (Resource Representations)
  • text/xml, text/html, image/gif, image/jpeg, etc (MIME Types)

การที่จะทำให้งานของเรา อยู่ในรูปของ REST ได้ ก็ใช่ว่ามองทุกอย่างให้เป็น state เท่านั้น มันยังมีเงื่อนไขอื่นๆ อีก แต่มันจะเน้นไปที่การใช้ทรัพยากรต่างๆ ที่มันมีอยู่ สังเกตจาก list ข้างบน ไม่มีอะไรใหม่เลย ในโลกของ www มันใช้ของเก่าที่มีอยู่แล้วให้เกิดประสิทธิภาพมากขึ้น(เหมือน Ajax เลยแฮะ) มันก็มีหลักของมันอยู่ เข้าไปดูได้ที่ wikipedia ได้ครับ

ตัวอย่างง่ายๆ ของ REST ก็คือ เว็บนี่ละครับ ที่เราใช้อยู่ทุกวันนี้ มองมันให้อยู่ในรูปของ state-machine สิครับ แล้วจะเห็นเอง คงพอจะมองเห็น� าพของ REST คร่าวๆ มาบ้าง ทีนี้ Key อีกตัวนึงก็คือ RESTful ที่จะเป็นตัวนำเข้าไปสู่ Simply Restful ไว้คราวหน้าละกันครับ

แก้ไขล่าสุด วันที่ 21 กรกฏาคม 2550 เวลา 23.51 น.

Filed Under: General | Tags: rest restful ruby on rails

Comments

Have your say

A name is required. You may use HTML in your comments.




codegent: we're hiring