Representational State Transfer Architecture


REST เป็นรูปแบบสถาปัตยกรรม (Architecture style) ของระบบเน็ตเวิร์ค โดยย่อมาจาก REpresentational State Transfer แนวคิดทั่วๆคือใช้มาตรฐานเดิมคือ HTTP และ XML ในการแลกเปลี่ยนข้อมูลกัน แต่พยายามทำให้ Simple ที่สุดโดยไม่ได้เพิ่มเติมอะไรขึ้นมาเลย แนวคิดคือใช้ HTTP Get เพื่อร้องขอ XML file และหากต้องการ update ก็ใช้ XML Put



   พื้นฐานของ REST นั่นคือการใช้งาน resource ต่างๆ


ผ่าน HTTP protocol
ผ่าน URI ที่สื่อสารได้ชัดเจน
ผ่าน HTTP method ที่เหมาะสม เช่น

HTTP GET สำหรับการดึงข้อมูล


HTTP POST สำหรับการสร้างข้อมูล


HTTP PUT สำหรับการแก้ไขข้อมูล


HTTP DELETE สำหรับลบข้อมูล


รูปแบบของข้อมูลที่ใช้สื่อสารกันอยู่ในรูปแบบ XML, JSON, HTML และอื่นๆ อีกมากมาย


รูปแบบของ REST

HTML
เซอร์วิส REST ช่วยให้สร้างเนื้อหาแบบโต้ตอบได้ง่ายซึ่งสามารถ แก้ไขได้โดยตรงโดยผู้ใช้ไซต์ของคุณ เครื่องมือที่มีการตอบสนอง รวมการแก้ไขที่สามารถสร้างโดย HTML และ JavaScript แบบฝังในคอมโพเนนต์ เนื้อหาเว็บซึ่งโยงกับเซอร์วิส REST เพื่อแสดงหรืออัพเดตเนื้อหา แบบอะซิงโครนัส
(AJAX)HTTP
ทำการรวมกับรีโมตไคลเอ็นต์ได้ง่ายกว่ากับ API ดั้งเดิม ฟังก์ชัน Web Content Manager สามารถถูกเรียกใช้ไปยังระบบรีโมตโดยไม่ต้องเพิ่มคอมโพเนนต์ฝั่งเซิร์ฟเวอร์ เพิ่มเติม เช่น JSP เพื่อเข้าถึง Java APIs HTTP อนุญาตให้เซอร์วิส เหล่านี้ทำงานกับโครงสร้างพื้นฐานของคุณได้ราบรื่นรวมถึงไฟร์วอลล์ พร็อกซีเซิร์ฟเวอร์ และแคช
XML
Web Services แบบ REST แท้จริงแล้วก็คือWeb page ที่มีลักษณะเป็น XML นั่นเอง ดังนั้นการดึงเอาข้อมูลจาก Web Services แบบนี้มาใช้งานจึงเป็นเทคนิกที่ว่าด้วยการอ่านค่าข้อมูลที่ต้องการจาก XML ที่ได้รับมา
JSON
ย่อมาจาก JavaScript Object Notation เป็นอีกหนึ่งรูปแบบภาษาที่ใช้ในการแลกเปลี่ยนข้อมูลข้ามแพลตฟอร์ม ซึ่งเป็นข้อมูลประเภทสตริงที่มีรูปแบบข้อมูลคล้ายกับอาร์เรย์ JSON สามารถใช้งานร่วมกับ Web Service แบบ REST ได้เป็นอย่างดี จึงได้รับความนิยมมากในการใช้แลกเปลี่ยนข้อมูล ในหัวข้อนี้จะได้กล่าวถึงการใช้ PHP เพื่อพัฒนา REST Web Service โดยใช้ JSON เป็นรูปแบบในการแลกเปลี่ยนข้อมูล

JSR 311 หรือ JAX-RS ( Java API for RESTful Web Service )


การกำหนดกลุ่มของ APIs เพื่อสร้าง REST Web Service แบบง่ายๆถ้ามองย้อมกลับไปก่อนที่จะเกิด JSR 311 นี้จะเจอ library หรือ REST framework ต่างๆ มากมาย เช่น Restlet และ RESTEasy ที่มีรูปแบบการพัฒนาที่ไม่เป็นมาตรฐานดังนั้นจึงสร้าง library ที่อ้างอิงตาม JSR 311 ขึ้นมา ซึ่งตัวนั้นก็คือ Jerseyโดย Jersey ประกอบไปด้วยส่วนการทำงานหลักๆ ดังนี้
 Core Server มีพวก annotation และ APIs ตามJSR 311
 Core Client คือ Client APIs ช่วยทำให้เราสามารถติดต่อกับ REST service ได้ง่ายๆ
 Integration คือส่วนที่ใช้สำหรับ integrate เขากับ framework ต่างๆ เช่น Spring framework, Guice เป็นต้น