ความแตกต่างระหว่าง REST & RESTful คืออะไร


540

อะไรคือความแตกต่างระหว่างระบบ REST และระบบที่ RESTful

จากบางสิ่งที่ฉันอ่านมากที่สุดบริการที่เรียกว่า REST เป็นบริการ RESTful จริง ๆ ดังนั้นความแตกต่างระหว่างสองคืออะไร


3
เหตุผลสำหรับคำถามคือเพราะถ้าคุณอ่านบทความในลิงค์และค้นหาว่า Dr Fielding คิดอย่างไรเกี่ยวกับการใช้งาน REST ส่วนใหญ่พวกเขาไม่ใช่ระบบ REST เลย มันแสดงพฤติกรรม RESTful แต่ไม่สามารถจัดเป็นระบบ REST ได้
AwkwardCoder

4
ฉันอ่านบทความ แต่ฉันไม่คิดว่ามันนำพาเขาไปสู่ความแตกต่างที่ไร้ประโยชน์ทางความหมายเช่นนั้น
JasonTrue

3
บทความ Wikipedia เกี่ยวกับ REST - en.wikipedia.org/wiki/Representational_State_Transfer - ย่อหน้าที่สอง - "การทำตามข้อ จำกัด ของ REST มักถูกอ้างถึงว่าเป็น 'RESTful'
เนท

1
@PramodNikumbh ตอบคำถามนี้ถูกต้องด้านล่าง ระบบ "REST" เป็นระบบที่เหมาะกับคำนิยามที่กว้างขึ้นของ REST มันแสดงหลักการพักผ่อนอย่างน้อย "Restful" อธิบายถึงระบบที่สอดคล้องกับ REST มากขึ้น
Andrew Norman

ฉันคิดว่ามีความสับสนในชื่อ "ฟูล" ใน RESTful จะทำให้เกิดความสับสนไร้สัญชาติและไร้สัญชาติและสิ่งเหล่านั้นมีสองสิ่งที่แตกต่างกันคือ REST และ RESTful ในความเห็นส่วนตัวของฉัน ลองนึกภาพ REST ที่ชื่อ state REST :)
Waheed

คำตอบ:


487

Representational state transfer (REST)เป็นรูปแบบของสถาปัตยกรรมซอฟต์แวร์ ตามที่อธิบายในวิทยานิพนธ์โดย Roy Fielding REST เป็น "รูปแบบสถาปัตยกรรม" ที่ใช้ประโยชน์จากเทคโนโลยีและโปรโตคอลที่มีอยู่ของเว็บเป็นหลัก

RESTful มักใช้เพื่ออ้างถึงเว็บเซอร์วิสที่ใช้สถาปัตยกรรมดังกล่าว


146
ดังนั้น REST จึงเป็นสถาปัตยกรรมและ RESTful คำคุณศัพท์?
manei_cc

4
@manei_cc: แม้ว่าในทางปฏิบัติสิ่งที่คุณจะพบคือบริการที่ชื่อว่า RESTful ที่ไม่ปฏิบัติตามสถาปัตยกรรม REST และโดยทั่วไปจะคล้ายกับ REST, REST-wannabies ฯลฯ ดังนั้นโปรดใส่ใจเสมอว่า "RESTful service" ไม่จำเป็นต้องสร้างโดยใช้ REST สถาปัตยกรรม แต่จริงจัสติน Ethier wrote: ใช้ประโยชน์จากเทคโนโลยีที่มีอยู่และโปรโตคอลของเว็บ
Azder

7
RESTful ควรใช้สำหรับ API ที่เคารพ REST จริงๆ ฉันเห็น webservices "REST" มากเกินไปซึ่งใช้ GET หรือ POST เท่านั้น RESTful เน้นเสียงในการใช้คำกริยา HTTP และการตั้งชื่อ URL โดยสมบูรณ์ แต่มันเป็นมุมมองของฉัน
มาร์ติ

1
architectของอะไร? ของ URL แบบhttps://translation.googleapis.com/language/translate/v2นี้เป็นสไตล์ของ REST เหรอ?
Asif Mushtaq

1
stackoverflow.com/users/3807248/pramod-nikumbhตอบคำถามนี้อย่างถูกต้องด้านล่าง
Andrew Norman

193

เซอร์วิส / สถาปัตยกรรมที่ใช้ REST เทียบกับ RESTFUL Services / Architecture

เพื่อความแตกต่างหรือเปรียบเทียบทั้ง 2 คุณควรจะรู้ว่าสิ่งที่เป็นส่วนที่เหลือ

REST ( RE presentational S tate T ransfer) นั้นเป็นรูปแบบสถาปัตยกรรมของการพัฒนาที่มีหลักการบางอย่าง:

  • มันควรจะไร้สัญชาติ

  • ควรเข้าถึงทรัพยากรทั้งหมดจากเซิร์ฟเวอร์โดยใช้ URI เท่านั้น

  • มันไม่มีการเข้ารหัส inbuilt

  • มันไม่มีเซสชัน

  • มันใช้หนึ่งและเพียงหนึ่งโปรโตคอล - HTTP

  • สำหรับการดำเนินการ CRUD ก็ควรใช้ HTTP คำกริยาเช่นget, post, putและdelete

  • ควรส่งคืนผลลัพธ์ในรูปแบบของ JSON หรือ XML, atom, OData เป็นต้น (ข้อมูลเบา)

REST based services ปฏิบัติตามหลักการข้างต้นบางข้อและไม่ใช่ทั้งหมด

RESTFUL services หมายความว่ามันเป็นไปตามหลักการข้างต้นทั้งหมด

มันคล้ายกับแนวคิดของ:

Object-based languagesรองรับแนวคิด OOP ทั้งหมดตัวอย่าง : C ++, C #

Object oriented languagesรองรับฟีเจอร์ OOPs บางตัวอย่าง : JavaScript, VB


ตัวอย่าง :

ASP Dot Net MVC 4 เป็นREST-Basedในขณะที่ไมโครซอฟท์เว็บ API RESTFulเป็น

MVC สนับสนุนหลักการ REST ข้างต้นเพียงบางส่วนในขณะที่ WEB API สนับสนุนหลักการ REST ข้างต้นทั้งหมด

MVC รองรับเฉพาะสิ่งต่อไปนี้จาก REST API

  • เราสามารถเข้าถึงทรัพยากรโดยใช้ URI

  • สนับสนุนกริยา HTTP เพื่อเข้าถึงทรัพยากรจากเซิร์ฟเวอร์

  • มันสามารถส่งคืนผลลัพธ์ในรูปแบบของ JSON, XML นั่นคือ HTTPResponse

อย่างไรก็ตามในเวลาเดียวกันใน MVC

  • เราสามารถใช้เซสชั่น

  • เราสามารถทำให้เป็นของรัฐ

  • เราสามารถส่งคืนวิดีโอหรือภาพจากวิธีการดำเนินการควบคุมซึ่งโดยทั่วไปเป็นการละเมิดหลักการ REST

นั่นคือเหตุผลที่ MVC คือREST-Basedในขณะที่เว็บ API RESTFulรองรับทุกหลักการข้างต้นและเป็น


10
ฉันไม่เข้าใจว่าทำไมสิ่งนี้จึงถูก downvote คำตอบนี้นำข้อมูลที่ชัดเจนจำนวนมากมาสู่คำถาม
Marcovecchio

5
คำตอบที่ดีที่สุดจนถึงตอนนี้
Limon

2
นี่เป็นคำตอบที่ดีที่สุด
Mário Meyrelles

2
คุณสามารถใช้ FTP ด้วย REST โปรดดู: stackoverflow.com/questions/35534812/…
crazyTech

7
ภาษาภายใต้หมวดหมู่ "ตามวัตถุ" และ "เชิงวัตถุ" ด้านบนจะถูกย้อนกลับ ภาษาเชิงวัตถุทำตามหลักการ OOPS ทั้งหมดในขณะที่วัตถุที่ใช้ตามวัตถุจะปฏิบัติตามบางอย่าง
Mrchief

119

"REST" เป็นกระบวนทัศน์ทางสถาปัตยกรรม "สงบ" อธิบายโดยใช้กระบวนทัศน์นั้น


architectของอะไร? ของ URL แบบhttps://translation.googleapis.com/language/translate/v2นี้เป็นสไตล์ของ REST เหรอ?
Asif Mushtaq

2
สถาปัตยกรรม REST ต้องการคุณลักษณะหลายอย่าง คุณไม่สามารถพูดอะไรบางอย่างที่เป็นไปตามหลักการ REST โดยเพียงแค่แสดง URL
ภาพเดี่ยว

42

ตามที่เจสันพูดในความคิดเห็น RESTful ใช้เพื่อเป็นคำคุณศัพท์เพื่ออธิบายสิ่งที่เคารพข้อ จำกัด ของ REST


29

REST ย่อมาจากการถ่ายโอนสถานะแบบแทน นั่นหมายความว่ารัฐจะไม่ถ่ายโอน แต่เป็นเพียงตัวแทนของมัน ตัวอย่างที่พบบ่อยที่สุดคือแอพที่ใช้เซิร์ฟเวอร์ HTML ล้วน (ไม่มีจาวาสคริปต์) เบราว์เซอร์ไม่รู้อะไรเกี่ยวกับแอปพลิเคชัน แต่ผ่านการเชื่อมโยงและทรัพยากรเซิร์ฟเวอร์สามารถถ่ายโอนสถานะของแอปพลิเคชันไปยังเบราว์เซอร์ โดยปกติปุ่มจะเปลี่ยนตัวแปรสถานะ (เช่นเปิดหน้าเว็บ) ในแอปพลิเคชัน windows ทั่วไปในเบราว์เซอร์คุณมีลิงก์ที่แสดงถึงการเปลี่ยนแปลงสถานะดังกล่าว

ความคิดคือการใช้สื่อสิ่งพิมพ์ และบางทีเพื่อสร้างประเภทสื่อสิ่งพิมพ์ใหม่ อาจเป็นไปได้ว่าเราสามารถขยายเบราว์เซอร์ด้วย javascript / AJAX และสร้างประเภทสื่อสิ่งพิมพ์ที่กำหนดเองใหม่ และเราจะมีแอปพลิเคชัน REST จริง

นี่เป็นรุ่นสั้น ๆ ของฉันเกี่ยวกับส่วนที่เหลือสำหรับปัญหาคือยากที่จะใช้งาน ฉันพูดอย่างสงบเป็นการส่วนตัวเมื่อฉันต้องการอ้างอิงถึงหลักการ REST แต่ฉันรู้ว่าฉันไม่ได้ใช้แนวคิดทั้งหมดของ REST เราไม่ได้พูดว่า SOAPful เพราะคุณใช้ SOAP หรือไม่ ฉันคิดว่าคนส่วนใหญ่ไม่ได้ทำ REST ตามที่จินตนาการไว้โดยผู้สร้าง Roy Fielding เราจริง ๆ แล้วใช้สถาปัตยกรรม RESTful หรือ RESTlike คุณสามารถดูวิทยานิพนธ์ของเขาและคุณจะพบตัวย่อ REST แต่ไม่ใช่คำว่า RESTful


23

REST เป็นรูปแบบของสถาปัตยกรรมซอฟต์แวร์สำหรับซอฟต์แวร์แบบกระจาย

การทำตามข้อ จำกัด ของ REST นั้นเรียกว่า 'สงบ'

ใช้มากในวันนี้เพื่อสร้างบริการเว็บเป็นทางเลือกแทนสบู่

ที่นี่คุณมีลิงค์เพื่อตรวจสอบ

http://en.wikipedia.org/wiki/Representational_State_Transfer
http://www.computerworld.com/s/article/297424/Representational_State_Transfer_REST_
http://www.ibm.com/developerworks/webservices/library/ws-restful/


13

ขอบคุณสำหรับคำตอบ อ่านบทความโดย Alex Rodriguez ซึ่งแสดงให้เห็นว่าบริการเว็บสงบมี 4 ลักษณะพื้นฐานคือ:

  1. ใช้วิธีการ HTTP อย่างชัดเจน
  2. ไร้สัญชาติ
  3. เปิดเผย URIs ที่คล้ายโครงสร้างไดเรกทอรี
  4. ถ่ายโอน XML, สัญลักษณ์วัตถุ JavaScript (JSON) หรือทั้งสองอย่าง

มันมีข้อ จำกัด 6 ข้อ
IronBlossom

2
@IronBlossom ดูแลเพื่อปรับปรุงคำตอบกับสองที่หายไป?
Paul Fleming

1
link dead, URL ใหม่ดูเหมือนจะเป็นIBM - RESTful Web services
dthal

10

Representational State Transfer (REST) ​​เป็นรูปแบบของสถาปัตยกรรมซอฟต์แวร์สำหรับระบบไฮเปอร์มีเดียแบบกระจายเช่นเวิลด์ไวด์เว็บ คำแนะนำการถ่ายโอนสถานะผู้แทนได้รับการแนะนำและกำหนดในปี 2000 โดย Roy Fielding 1 [2] ในวิทยานิพนธ์ระดับปริญญาเอกของเขา Fielding เป็นหนึ่งในผู้เขียนหลักของข้อกำหนดคุณสมบัติ Hypertext Transfer Protocol (HTTP) รุ่น 1.0 และ 1.1 การทำตามข้อ จำกัด ของ REST นั้นเรียกว่า 'สงบ' ที่มา: วิกิพีเดีย


8

บริการเว็บไซต์เป็นเว็บไซต์หลักที่มีการใช้เนื้อหาโดยโปรแกรมคอมพิวเตอร์ไม่ใช่ผู้คน REST เป็นชุดของหลักการสถาปัตยกรรมที่กำหนดว่าบริการเว็บควรใช้ประโยชน์สูงสุดจาก HTTP และมาตรฐานเว็บอื่น ๆ เพื่อให้โปรแกรมได้รับสิ่งที่ดีทั้งหมดที่ผู้คนสามารถออกไปจากเว็บได้ REST มักถูกเปรียบเทียบกับบริการเว็บ SOAP และบริการเว็บอื่น ๆ ที่เรียกว่า "การเรียกขั้นตอนระยะไกล"

การนำเสนอผลงานสเตฟาน Tilkov ของในส่วนที่เหลือที่ Parleys.com ค่อนข้างดีโดยเฉพาะอย่างยิ่งนี้

สำหรับหนังสือที่คุณไม่สามารถรับได้ดีกว่าชาร์ดสันและรูบี้พักผ่อน Web Services


ดังนั้นเว็บไซต์ปกติจึงถือเป็นแอปพลิเคชัน REST ได้หรือไม่
yoyo_fun

1
@yoyo_fun: ใช่เว็บไซต์ปกติสามารถสร้าง RESTfully ได้เช่นกัน ในระดับหนึ่งสิ่งที่เป็นนามธรรมไม่ว่าเซิร์ฟเวอร์จะส่งคืน HTML ให้กับมนุษย์หรือ JSON (พูด) ไปยังโปรแกรมนั้นไม่สำคัญ
Jim Ferrans


4

API มี 4 ระดับที่กำหนดไว้ในโมเดลความสมบูรณ์ของ Richardson สิ่งเหล่านี้ถูกกำหนดเป็น:

  • ระดับ 0: ระบบใด ๆ ที่มีจุดปลายเดียวสำหรับ apis ทั้งหมด (SOAP หรือ RPC อยู่ในหมวดหมู่นี้) apis ระดับ 0 สามารถคล้ายกับ "คำสั่ง"

  • ระดับ 1: ระบบที่อธิบาย ResourceUri นี่คือระบบที่กำหนด URI ที่อิงเอนทิตีหลายแห่ง (แทนที่จะมีจุดปลายเดียวเหมือนระบบระดับ 0) URIs เหล่านี้สามารถใช้การกระทำ http ที่แตกต่างกัน (POST, GET, PUT, ฯลฯ ) เพื่อใช้การกระทำที่แตกต่างกับทรัพยากรนั้น

  • ระดับ 2: ระดับ 1 หรือการใช้เมธอด / กริยามาตรฐาน HTTP ที่สอดคล้องและการตอบสนองรหัสสถานะหลายรายการ

  • ระดับ 3: aka ระดับ 2 บวก HATEOAS (ไฮเปอร์มีเดียรวมอยู่ในการตอบกลับซึ่งอธิบายการโทรเพิ่มเติมที่คุณสามารถทำได้)

ในขณะที่ระดับ 1, ระดับ 2 และระดับ 3 ถือได้ว่าเป็นระบบ REST เฉพาะระดับที่เข้มงวด (aka ระดับ 2 และระดับ 3) เท่านั้นที่จะถือว่าเป็น RESTful

ดังนั้นโดยพื้นฐานแล้ว RESTful apis ทั้งหมดเป็น REST apis แต่ไม่ใช่ RIS apis ทั้งหมดจะเป็น RESTful

นิยามของรูปแบบการครบกำหนดของริชาร์ดสัน


2

คิดว่า REST เป็น "คลาส" สถาปัตยกรรมในขณะที่ RESTful เป็น "อินสแตนซ์" ที่เป็นที่รู้จักกันดีของคลาสนั้น

โปรดคำนึงถึง ""; เราไม่ได้จัดการกับวัตถุการเขียนโปรแกรม "ของจริง" ที่นี่


1

"บริการ REST" และ "บริการ RESTful" เป็นบริการเดียวกัน

ระบบ RESTful คือระบบใด ๆ ที่ตามหลักการ REST ตามที่กำหนดไว้ในเอกสารต้นฉบับที่สร้างแนวคิดของแอปพลิเคชันเครือข่าย RESTfulเอกสารต้นฉบับที่สร้างความคิดของการใช้งานเครือข่ายสงบ

เป็นที่น่าสังเกตว่ามีระดับความสงบที่แตกต่างกันไป โดยรวมแล้ว REST เป็นสไตล์ไม่ใช่มาตรฐานดังนั้นจึงมีที่ว่างสำหรับการตีความตามความต้องการ ตัวอย่างหนึ่งคือ URL ทรัพยากรแบบลำดับชั้น (เช่น/things/ID/relatedthings ) vs URL แบบแบน (เช่น/things/IDและ/relatedthings?thing=ID)


1

REST (REpresentation State Transfer) เป็นสถาปัตยกรรมที่ใช้สร้าง WebServices

และ

RESTful เป็นวิธีการเขียนบริการโดยใช้สถาปัตยกรรม REST บริการ RESTful จะเปิดเผยทรัพยากรเพื่อระบุเป้าหมายที่จะโต้ตอบกับลูกค้า


0

REST เป็นรูปแบบสถาปัตยกรรมสำหรับการสร้างบริการเว็บ บริการ RESTful เป็นบริการที่ใช้รูปแบบนั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.