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 api

 

ประวัติของ 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

rest 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

rest 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

2 Thoughts to “RESTful คืออะไร REST คือ การสื่อสารแลกเปลี่ยนข้อมูลผ่าน webservice”

  1. […] วิธีใช้ LINE API ทั้งหมด จะใช้ผ่าน HTTP/HTTPS Protocol โดยใช้ POST method และ ใช้ข้อมูล body message เป็น JSON format  เป็นตัวส่ง request ไปหา LINE Server ซึ่งอาจจะทำเป็น RESTful webservice […]

Leave a Reply