RESTful หรือ REST คือ
Representational state transfer หรือ REST คือ การสร้าง Webservice ชนิดหนึ่งที่ใช้สื่อสารกันบน Internet ใช้หลักการแบบ stateless คือไม่มี session ซึ่งต่างจาก webservice แบบอื่นเช่น WSDL และ SOAP การทำงานของ RESTful Webservice จะอาศัย URI/URL ของ request เพื่อค้นหาและประมวลผลแล้วตอบกลับไปในรูป XML, HTML, JSON โดย response ที่ตอบกลับจะเป็นการยืนยันผลของคำสั่งที่ส่งมา และสามารถพัฒนาด้วยภาษา programming ได้หลากหลาย คำสั่งก็จะมีตาม HTTP verbs ซึ่งก็คือ
- GET ทำกการดึงข้อมูลภายใน URI ที่กำหนด
- POST สำหรับสร้างข้อมูล
- PUT ใช้แก้ไขข้อมูล
- DELETE สำหรับลบข้อมูล
ประวัติของ REST
REST ถูกตั้งขึ้นโดย Roy Fielding ในปี 2000 ที่ University of California, Irvine ซึ่งได้ทำการพัฒนาขึ้นมาควบคู่กับ HTTP1.1 และ Uniform Resource Identifiers (URI)
คุณสมบัติของ REST
เป็น API อย่างหนึ่ง ซึ่งทุกๆ system ต่างใช้ resource ซึ่งเป็นได้ทั้ง image, video, web page หรือข้อมูลทางธรุกิจ ก็ได้ที่สามารถแสดงบนระบบ computer วัตถุประสงค์เพื่อให้ user สามารถเข้าถึง, ติดตั้ง, ปรับแต่ง, ขยาย resource เหล่านี้ได้ง่าย ซึ่งทาง RESTful ได้ออกแบบมาให้มีคุณสมบัติต่อไปนี้
- แสดงผล
- เก็บข้อมูล
- มี URIs
- Stateless ทำงานโดยไม่ต้องมี session
- เชื่อมต่อระหว่าง web service
- Caching
ตัวอย่าง response ให้รูปแบบต่างๆ
JSON
{ "ID": "1", "Name": "M Vaqqas", "Email": "m.vaqqas@gmail.com", "Country": "India" }
XML
<Person>
<ID>1</ID>
<Name>M Vaqqas</Name>
<Email>m.vaqqas@gmail.com</Email>
<Country>India</Country>
</Person>
HTTP Request
- <VERB> เป็นส่วนของ HTTP method เช่น
GET
,PUT
,POST
,DELETE
- <URI> คือตำแหน่งของสถานที่ข้อมูล ที่ต้องการให้ระบบทำงาน
- <HTTP Version> ปกติจะใช้ “HTTP v1.1”
- <Request Header> ส่วนของ metadata ที่ใช้เก็บค่า key-value ของ header เพื่อบอกข้อมูลผู้ส่ง เช่น format ของข้อมูบ body
- <Request Body> ส่วนข้อมูล content ใน REST
ตัวอย่าง POST Method
POST http://MyService/Person/ Host: MyService Content-Type: text/xml; charset=utf-8 Content-Length: 123 <?xml version="1.0" encoding="utf-8"?> <Person> <ID>1</ID> <Name>M Vaqqas</Name> <Email>m.vaqqas@gmail.com</Email> <Country>India</Country> </Person>
ตัวอย่าง GET Method
GET http://www.w3.org/Protocols/rfc2616/rfc2616.html HTTP/1.1 Host: www.w3.org Accept: text/html,application/xhtml+xml,application/xml; … User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 … Accept-Encoding: gzip,deflate,sdch Accept-Language: en-US,en;q=0.8,hi;q=0.6
HTTP Response
- <Response Code> คือผลลัพธ์การทำงานในระดับ HTTP เป็นเลข 3 หลัก ถ้าปกติจะเป็น 200 OK
- <Response Header> ส่วนของ metadata ที่ใช้เก็บค่า key-value ของ header
- <Request Body> ส่วนข้อมูลผลลัพธ์ content ใน REST
ตัวอย่างผลลัพธ์จาก GET Method
HTTP/1.1 200 OK Date: Sat, 23 Aug 2014 18:31:04 GMT Server: Apache/2 Last-Modified: Wed, 01 Sep 2004 13:24:52 GMT Accept-Ranges: bytes Content-Length: 32859 Cache-Control: max-age=21600, must-revalidate Expires: Sun, 24 Aug 2014 00:31:04 GMT Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns='http://www.w3.org/1999/xhtml'> <head><title>Hypertext Transfer Protocol -- HTTP/1.1</title></head> <body> ...
Author: Suphakit Annoppornchai
Credit: https://saixiii.com,http://www.drdobbs.com
[…] วิธีใช้ LINE API ทั้งหมด จะใช้ผ่าน HTTP/HTTPS Protocol โดยใช้ POST method และ ใช้ข้อมูล body message เป็น JSON format เป็นตัวส่ง request ไปหา LINE Server ซึ่งอาจจะทำเป็น RESTful webservice […]
[…] REST เป็น protocol […]