REST คืออะไร (เป็นภาษาอังกฤษแบบง่าย) [ปิด]


84

เมื่อเร็ว ๆ นี้ฉันสนใจที่จะทำความคุ้นเคยกับ REST ฉันลองอ่านรายการ wiki บน RESTแต่มันไม่ช่วยอะไรเลย ฉันจะซาบซึ้งจริงๆถ้ามีคนสามารถอธิบายเป็นภาษาอังกฤษง่าย ๆ (นั่นคือไม่มีศัพท์แสงทางเทคนิคที่ไม่จำเป็น )

  1. REST คืออะไร
  2. ตำแหน่งใดที่อยู่ในระบบนิเวศสถาปัตยกรรมเว็บ
  3. วิธีการที่แน่น (หรือคับ) มันเป็นคู่กับโปรโตคอล
  4. ทางเลือกในการ REST คืออะไรและ REST เปรียบเทียบกับพวกเขาอย่างไร

ฉันเข้าใจว่ามันเป็นไปไม่ได้ที่จะตอบคำถามนี้ในหนึ่งหรือสองย่อหน้าในกรณีนั้นลิงก์ที่เกี่ยวข้องจะได้รับการชื่นชมอย่างมาก



ฉันคิดว่านี่เป็นข้อมูล แต่ไม่ละเอียดเกินไป: ibm.com/developerworks/webservices/library/ws-restful
NoChance

ฉันสงสัยว่าจะตอบคำถามนี้ได้ไหม?
Gary Rowe

@GaryRowe ฉันได้ทำเครื่องหมายคำตอบเดียวแล้วเดาว่ามันถูกลบออกด้วยเหตุผลบางอย่าง ฉันไม่เข้าใจเว็บไซต์นี้
Gaurav

1
ไม่มีคำตอบด้านล่างใด ๆ ที่ใช้คำว่า "idempotent" คุณควรมองหามัน: idempotency เป็นส่วนสำคัญของสถาปัตยกรรม RESTful
โซโลมอนช้า

คำตอบ:


10

REST คืออะไร (เป็นภาษาอังกฤษแบบง่าย)

ภาษาอังกฤษธรรมดา:

อ้างอิง:การกระทำของการพูดหรือการกระทำในนามของใครบางคน
สถานะการโอน:สถานะการโอน


วิเคราะห์ทางเทคนิค:

  • เราไม่ถ่ายโอนวัตถุจริง แต่เป็นตัวแทนของมันในรูปแบบ (เช่น. xml / json / text เพื่อเป็นตัวแทนของตารางฐานข้อมูล)
  • ส่วนที่เหลือสำหรับการเปิดเผย API สาธารณะผ่านทางอินเทอร์เน็ตเพื่อจัดการกับการดำเนินงาน CRUD กับข้อมูล ส่วนที่เหลือจะมุ่งเน้นไปที่การเข้าถึงทรัพยากรที่มีชื่อผ่านอินเตอร์เฟซที่สอดคล้องกันเดียว
  • REST แสดงผ่านสื่อบางประเภท ตัวอย่างประเภทสื่อ ได้แก่ XML, JSON และ RDF
  • REST เป็นรูปแบบสถาปัตยกรรมสำหรับสถาปัตยกรรมเชิงทรัพยากร (ROA)ไม่ใช่ข้อมูลจำเพาะหรือมาตรฐาน
  • รูปแบบสถาปัตยกรรมหมายความว่ามันเป็นแนวคิดทฤษฎี (และวิธีการใช้งานมันขึ้นอยู่กับคุณ)
  • ทุกสิ่งมีการระบุโดยจุดสิ้นสุดที่ไม่ซ้ำกัน ie มีปลายทางหนึ่งจุดสำหรับแต่ละทรัพยากร (ข้อมูล)
  • ปลายทางประกอบด้วยชื่อโดเมนพร้อมที่อยู่ทรัพยากร

ส่วนที่เหลือเทียบกับสบู่


43

REST คืออะไร

การถ่ายโอนสถานะของรัฐนำเสนอ มันอธิบายว่าระบบหนึ่งสามารถสื่อสารสถานะกับอีกระบบหนึ่งได้อย่างไร ตัวอย่างหนึ่งจะเป็นสถานะของผลิตภัณฑ์ (ชื่อคำอธิบาย ฯลฯ ) แสดงเป็น XML, JSON หรือข้อความธรรมดา แนวคิดทั่วไปเกี่ยวกับสถานะนั้นเรียกว่าทรัพยากร

มันอยู่ในตำแหน่งใดในระบบนิเวศของสถาปัตยกรรมเว็บ?

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

มันมีการเชื่อมโยงกับโปรโตคอลอย่างแน่นหนา (หรือหลวม) อย่างไร?

REST ไม่ใช่ HTTP มันใช้ HTTP เพราะในรูปแบบทั่วไปส่วนใหญ่ที่เหลืออยู่เพื่อช่วยให้เครื่องในการทำแผนที่แนวคิดของคำกริยากับคอลเลกชันคำนามโดยพลการ HTTP มีชุดคำกริยาทั่วไปที่มีประโยชน์ (GET, PUT, PATCH ฯลฯ ) ที่สามารถนำไปใช้กับคำนามโดยพลการที่แสดงเป็น URIs โดยใช้ HTTP เช่น GET http://example.org/Product(54 )

ทางเลือกในการ REST คืออะไรและ REST เปรียบเทียบกับพวกเขาอย่างไร

นี่คล้ายกับการถามว่า "วิธีการสงบของฉันเป็นอย่างไร" ใช้รายการต่อไปนี้ (สรุปจากโมเดลการครบกำหนดของ Richardson ตามที่อธิบายโดย Martin Fowler ):

ระดับ 0 - บึงแห่ง POX

ใช้ POST สำหรับทุกสิ่ง (อ่านเขียนลบ) นี่คือ SOAP, POX, RPI ฯลฯ คุณเพียงแค่ใช้ HTTP เป็นช่องทางสำหรับโปรโตคอลของคุณเอง คุณกำหนดเป้าหมายจุดปลายเดียวที่ทำทุกอย่างตามเนื้อหาของเนื้อความคำขอ

ระดับ 1 - ทรัพยากร

ใช้ POST สำหรับทุกสิ่ง กำหนดเป้าหมายหลายจุดปลายทางที่ออกแบบมาเพื่อให้บริการข้อมูลเกี่ยวกับสิ่งเฉพาะ คุณเพิ่งค้นพบแหล่งข้อมูล

ระดับ 2 - คำกริยา HTTP

ใช้คำกริยา HTTP กับทรัพยากร ตอนนี้คุณจะได้รับมัน POST คือการสร้าง, PUT คือการเขียนทับ, OPTIONS สำหรับการดำเนินการที่มีอยู่, ลบไป, ดี, ลบทรัพยากร เป็นผลมาจากการใช้คำกริยารหัสสถานะ HTTP ที่แตกต่างกันเหล่านี้เริ่มมีความเกี่ยวข้องมากขึ้น (202 ยอมรับทุกคน?)

ระดับ 3 - การควบคุมไฮเปอร์มีเดีย ( HATEOAS )

ณ จุดนี้คุณทำการกระโดดครั้งสุดท้ายและแนะนำไฮเปอร์มีเดียเป็นกลไกการควบคุมการไหล ไคลเอนต์ REST ไม่จำเป็นต้องมีความรู้ล่วงหน้าเกี่ยวกับวิธีการโต้ตอบกับแอปพลิเคชันหรือเซิร์ฟเวอร์ใด ๆ สิ่งนี้สามารถสื่อสารใน HTTP ผ่านฟิลด์ส่วนหัวของประเภทเนื้อหา รูปแบบข้อความรวมถึงAtomPubและ (กระชับมากกว่า) HALในขณะที่HyperAudioทำงานได้ดีสำหรับสตรีมเสียง (ดู SoundCloud และคณะ)


คุณพูดว่า "REST ไม่ใช่ HTTP" แต่ Roy Fielding ดูเหมือนจะจับจ้องอยู่ที่ความคิดที่ว่าไฮเปอร์เท็กซ์นั้นเป็นข้อกำหนดสิ่งที่ HATEOAS จัดการทั้งหมดโดยที่เขาไม่ทำตาม REST ในขณะที่ไฮเปอร์เท็กซ์! = HTTP ฉันสงสัยว่าคุณสามารถทำอะไรนอก HTTP ได้จริง ๆ ...
Andres F.

จากข้อมูลนี้ ( roy.gbiv.com/untangled/2008/… ) Roy Fielding ชี้ให้เห็นว่าไฮเปอร์เท็กซ์หรือไฮเปอร์มีเดียย่อยของมันนั้นสามารถแสดงนอก HTML ได้ตราบใดที่มันรองรับการเชื่อมโยงบางอย่าง
Gary Rowe

3
HTTP ทำงานได้ดีกับ REST เนื่องจากมีคำกริยาที่เป็นมาตรฐานสำหรับการทำงานกับ URIs ที่แสดงถึงคำนามใน REST ในโปรโตคอลไร้สัญชาติ ในอุดมคติ. อย่างไรก็ตามในวิทยานิพนธ์ของเขา ( ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm ) เขาตั้งข้อสังเกตว่า "REST ไม่ได้ จำกัด การสื่อสารกับโปรโตคอลเฉพาะ แต่มัน จำกัด การเชื่อมต่อระหว่างส่วนประกอบและขอบเขตของ ปฏิสัมพันธ์และการใช้สมมติฐานที่อาจเกิดขึ้นระหว่างส่วนประกอบ " ดังนั้นการใช้งาน FTP แบบเต็มจึงไม่น่าจะสงบถ้าไม่มีการจัดการสถานะฝั่งไคลเอ็นต์
Gary Rowe

2
+1 สำหรับลิงก์ Martin Fowler ตามปกติ Martin Fowler ได้เขียนบทความที่อธิบายแนวคิดในวิธีที่ชัดเจนและรัดกุมที่สุด
Tom Carter

คุณstate transferไม่ครอบคลุมถึงการเป็นตัวแทน การกระทำของการพูดหรือการกระทำในนามของใครบางคนเป็นตัวแทนว่ามันทำงานอย่างไรในบริบทนี้?
Premraj

11

แม้ว่า REST จะเป็นตัวย่อของการโอนย้ายสถานะแทน แต่ก็อาจง่ายกว่าที่จะพิจารณาแนวคิดของการดำเนินการต่างๆผ่านอินเทอร์เฟซที่ใช้งานง่าย

ตัวอย่างเช่น URL เช่นhttp://www.mysite.com/FindProduct/125/สามารถตีความได้ว่าเป็นคนที่ต้องการข้อมูลเกี่ยวกับผลิตภัณฑ์ด้วยรหัส 125

แม้ว่า REST นั้นมักจะคิดในแง่ของ HTTP แต่แนวคิดนี้สามารถนำไปใช้กับโปรโตคอลอื่น ๆ ตามที่ระบุไว้ในการอ้างอิง Wikipedia

ตัวอย่างอื่น ๆ ของ REST ที่อาจมีประโยชน์:


2
ขอบคุณสำหรับลิงก์ไปที่ "Learn REST: A Tutorial"! นั่นคือการสอนครั้งแรกที่ฉันได้อ่านซึ่งทำให้ฉันมีความรู้สึกที่ฉันได้เรียนรู้บางสิ่งบางอย่างที่เป็นรูปธรรม ทุกสิ่งทุกอย่างที่ฉันได้อ่าน (รวมถึงบทความ Wikipedia) อธิบาย REST ด้วยวิธีที่เป็นนามธรรมที่สุดล้อมรอบด้วยศัพท์แสงทางเทคนิค
Avian00

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