คำตอบ:
SOAP - "Simple Object Access Protocol"
SOAP เป็นวิธีการถ่ายโอนข้อความหรือข้อมูลจำนวนเล็กน้อยผ่านทางอินเทอร์เน็ต ข้อความ SOAP ถูกจัดรูปแบบใน XML และโดยทั่วไปแล้วจะส่งโดยใช้ HTTP (โปรโตคอลการถ่ายโอนไฮเปอร์เท็กซ์)
ส่วนที่เหลือ - การโอนย้ายสถานะแทน
ส่วนที่เหลือเป็นวิธีที่ง่ายในการส่งและรับข้อมูลระหว่างไคลเอนต์และเซิร์ฟเวอร์และไม่มีมาตรฐานที่กำหนดไว้มากมาย คุณสามารถส่งและรับข้อมูลเป็น JSON, XML หรือแม้แต่ข้อความธรรมดา น้ำหนักเบาเมื่อเทียบกับ SOAP
ทั้งสองวิธีมีการใช้งานโดยผู้เล่นรายใหญ่หลายราย มันเป็นเรื่องของการตั้งค่า ความชอบของฉันคือ REST เพราะใช้และเข้าใจได้ง่ายกว่า
Simple Object Access Protocol (SOAP):
การถ่ายโอนสถานะตัวแทน (REST):
มีการอภิปรายที่ไม่มีที่สิ้นสุดในส่วนที่เหลือ VS สบู่ใน google
ที่ฉันชอบคือคนนี้ ปรับปรุง 27 พฤศจิกายน 2013: เว็บไซต์พอล Prescod ดูเหมือนจะได้ไปแบบออฟไลน์และบทความนี้ไม่สามารถใช้ได้อีกสำเนา แต่สามารถพบได้บนเครื่อง Waybackหรือเป็นรูปแบบไฟล์ PDF ที่CiteSeerX
ส่วนที่เหลือ
ฉันเข้าใจว่าความคิดหลักของ REST นั้นง่ายมาก เราใช้เว็บเบราว์เซอร์มาหลายปีแล้วและเราได้เห็นว่าเว็บไซต์ที่ง่ายยืดหยุ่นและมีประสิทธิภาพนั้นเป็นอย่างไร ไซต์ HTML ใช้การเชื่อมโยงหลายมิติและแบบฟอร์มเป็นวิธีหลักในการโต้ตอบกับผู้ใช้ เป้าหมายหลักของพวกเขาคือการช่วยให้เราลูกค้าจะรู้เพียงเชื่อมโยงเหล่านั้นที่เราสามารถใช้ในสถานะปัจจุบัน และส่วนที่เหลือก็พูดว่า 'ทำไมไม่ใช้หลักการเดียวกันในการขับเคลื่อนคอมพิวเตอร์มากกว่าลูกค้ามนุษย์ผ่านแอปพลิเคชันของเรา?' รวมเข้ากับพลังของโครงสร้างพื้นฐาน WWW และคุณจะได้รับเครื่องมือนักฆ่าสำหรับการสร้างแอพพลิเคชั่นที่ยอดเยี่ยม
อีกคำอธิบายที่เป็นไปได้สำหรับคนที่คิดในเชิงคณิตศาสตร์ แต่ละแอปพลิเคชันนั้นเป็นเครื่องจักรของรัฐที่มีการดำเนินการทางตรรกะทางธุรกิจเป็นการเปลี่ยนสถานะ แนวคิดของ REST คือการแม็พการเปลี่ยนแปลงแต่ละครั้งบนการร้องขอบางอย่างไปยังทรัพยากรและจัดหาลิงก์ที่แสดงถึงช่วงการเปลี่ยนภาพให้กับลูกค้าในสถานะปัจจุบัน ดังนั้นมันจึงจำลองโมเดลเครื่องจักรรัฐผ่านการรับรองและลิงก์ นี่คือเหตุผลที่มันถูกเรียกว่าการถ่ายโอนสถานะของการนำเสนอ
มันค่อนข้างน่าแปลกใจที่คำตอบทั้งหมดดูเหมือนจะเน้นที่รูปแบบข้อความหรือการใช้คำกริยา HTTP ในความเป็นจริงรูปแบบข้อความไม่สำคัญเลย REST สามารถใช้รูปแบบใดก็ได้โดยมีเงื่อนไขว่าผู้พัฒนาบริการจะจัดทำเอกสาร คำกริยา HTTP ทำให้บริการ CRUD เป็นเพียงบริการ แต่ยังไม่สงบ สิ่งที่เปลี่ยนบริการเป็นบริการ REST คือการเชื่อมโยงหลายมิติ (การควบคุมไฮเปอร์มีเดีย) ที่ฝังอยู่ในการตอบกลับของเซิร์ฟเวอร์พร้อมกับข้อมูลและจำนวนเงินจะต้องเพียงพอสำหรับลูกค้าที่จะเลือกการกระทำถัดไปจากลิงก์เหล่านั้น
แต่น่าเสียดายที่มันค่อนข้างยากที่จะหาข้อมูลที่ถูกต้องในส่วนที่เหลือบนเว็บยกเว้นสำหรับวิทยานิพนธ์รอยฝ่าย (เขาเป็นคนที่ได้รับส่วนที่เหลือ) ฉันอยากจะแนะนำหนังสือ'REST in Practice'เพราะจะให้การสอนทีละขั้นตอนอย่างละเอียดเกี่ยวกับวิธีการพัฒนาจาก SOAP เป็น REST
สบู่
นี่เป็นหนึ่งในรูปแบบที่เป็นไปได้ของสไตล์สถาปัตยกรรม RPC (การเรียกขั้นตอนระยะไกล) โดยพื้นฐานแล้วมันเป็นเพียงเทคโนโลยีที่ช่วยให้ลูกค้าสามารถเรียกวิธีการของเซิร์ฟเวอร์ผ่านขอบเขตการให้บริการ (เครือข่ายกระบวนการ ฯลฯ ) ราวกับว่าพวกเขากำลังเรียกวิธีการในระบบ แน่นอนว่ามันแตกต่างจากการเรียกวิธีการในท้องถิ่นในเรื่องความเร็วความน่าเชื่อถือและอื่น ๆ แต่ความคิดนั้นง่ายมาก
เมื่อเทียบกับ
รายละเอียดเช่นโปรโตคอลการขนส่งรูปแบบข้อความ xsd, wsdl ฯลฯ ไม่สำคัญเมื่อเปรียบเทียบรูปแบบของ RPC กับ REST ข้อแตกต่างที่สำคัญคือบริการ RPC นำเสนอจักรยานด้วยการออกแบบโพรโทคอลแอปพลิเคชันของตัวเองใน RPC API ด้วยความหมายที่รู้เท่านั้น ดังนั้นลูกค้าทุกคนต้องเข้าใจโปรโตคอลนี้ก่อนที่จะใช้บริการและไม่สามารถสร้างโครงสร้างพื้นฐานทั่วไปเช่นแคชได้เนื่องจากความหมายที่เป็นกรรมสิทธิ์ของคำขอทั้งหมด นอกจากนี้ RPC APIs ไม่แนะนำการกระทำที่ได้รับอนุญาตในสถานะปัจจุบันนี้จะต้องได้รับจากเอกสารเพิ่มเติม ส่วนที่เหลือหมายถึงการใช้อินเตอร์เฟสแบบสม่ำเสมอเพื่อให้ลูกค้าหลายรายมีความเข้าใจเกี่ยวกับความหมายของ API และตัวควบคุมไฮเปอร์สื่อ (ลิงก์) เพื่อเน้นตัวเลือกที่มีในแต่ละรัฐ ดังนั้น,
ในทางที่ SOAP (เช่นเดียวกับ RPC อื่น ๆ ) เป็นความพยายามที่จะขุดอุโมงค์ผ่านขอบเขตการให้บริการรักษาสื่อการเชื่อมต่อเป็นกล่องดำที่สามารถส่งข้อความเท่านั้น ส่วนที่เหลือเป็นการตัดสินใจที่จะรับทราบว่าเว็บเป็นระบบข้อมูลที่มีการกระจายขนาดใหญ่เพื่อยอมรับโลกอย่างที่เป็นอยู่และเรียนรู้ที่จะเป็นผู้เชี่ยวชาญแทนที่จะต่อสู้กับมัน
SOAP ดูเหมือนจะยอดเยี่ยมสำหรับ API เครือข่ายภายในเมื่อคุณควบคุมทั้งเซิร์ฟเวอร์และไคลเอนต์และในขณะที่การโต้ตอบไม่ซับซ้อนเกินไป มันเป็นเรื่องธรรมดาสำหรับนักพัฒนาที่จะใช้มัน อย่างไรก็ตามสำหรับ API สาธารณะที่ใช้โดยบุคคลอิสระจำนวนมากนั้นซับซ้อนและยิ่งใหญ่ REST ควรเหมาะสมกว่า แต่การเปรียบเทียบครั้งล่าสุดนั้นค่อนข้างคลุมเครือ
ปรับปรุง
ประสบการณ์ของฉันแสดงให้เห็นถึงการพัฒนา REST โดยไม่คาดคิดยากกว่า SOAP อย่างน้อยสำหรับ. NET ในขณะที่มีเฟรมเวิร์กที่ยอดเยี่ยมเช่น ASP.NET Web API ไม่มีเครื่องมือที่จะสร้างพร็อกซีฝั่งไคลเอ็นต์โดยอัตโนมัติ ไม่มีอะไรที่เหมือนกับ 'เพิ่มการอ้างอิงบริการเว็บ' หรือ 'เพิ่มการอ้างอิงบริการ WCF' หนึ่งมีการเขียนทั้งหมดเป็นอันดับและบริการสอบถามรหัสด้วยมือ และผู้ชายนั่นเป็นรหัสสำเร็จรูปจำนวนมาก ฉันคิดว่าการพัฒนา REST ต้องการสิ่งที่คล้ายกับ WSDL และการนำเครื่องมือมาใช้สำหรับแต่ละแพลตฟอร์มการพัฒนา ในความเป็นจริงดูเหมือนว่าจะมีพื้นฐานที่ดี: WADLหรือWSDL 2.0แต่ไม่มีมาตรฐานใดที่ได้รับการสนับสนุนอย่างดี
อัพเดท (ม.ค. 2559)
ปรากฎว่าขณะนี้มีเครื่องมือหลากหลายสำหรับการกำหนด REST API ความชอบส่วนบุคคลของฉันอยู่ในขณะนี้Raml
บริการบนเว็บทำงานอย่างไร
นี่เป็นคำถามที่กว้างเกินไปเพราะมันขึ้นอยู่กับสถาปัตยกรรมและเทคโนโลยีที่ใช้ในบริการเว็บเฉพาะ แต่โดยทั่วไปบริการเว็บเป็นเพียงแอปพลิเคชั่นบางอย่างในเว็บที่สามารถรับคำขอจากลูกค้าและตอบกลับ มันสัมผัสกับเว็บจึงจะเป็นเว็บบริการและก็มักจะใช้ได้ 24/7 ที่ว่าทำไมมันเป็นบริการ แน่นอนมันแก้ปัญหาบางอย่าง (มิฉะนั้นทำไมคนที่เคยใช้บริการเว็บ) สำหรับลูกค้า
นี่คือคำอธิบายที่ง่ายที่สุดที่คุณจะพบได้
บทความนี้จะเล่าเรื่องของสามีต่อภรรยาโดยที่สามีอธิบายให้ภรรยาฟังเกี่ยวกับ REST ในแง่คนธรรมดาบริสุทธิ์ ต้องอ่าน!
How-i-อธิบายให้กับภรรยาของฉัน (ลิงค์เดิม)
How-i-อธิบายให้กับภรรยาของฉัน (ลิงค์การทำงานของHow-i-อธิบายให้กับภรรยาของฉัน (2013-07-19)
SOAP - Simple Object Access Protocolเป็นโปรโตคอล !
REST - การถ่ายโอนสถานะของการนำเสนอเป็นรูปแบบสถาปัตยกรรม !
SOAP
เป็นโปรโตคอล XML ที่ใช้ในการถ่ายโอนข้อความโดยทั่วไปผ่านทาง HTTP
REST
และSOAP
เป็นเนื้อหาที่ ไม่ได้เกิดร่วมกัน สถาปัตยกรรม RESTful อาจใช้HTTP
หรือSOAP
โปรโตคอลการสื่อสารอื่น ๆ REST
เหมาะสำหรับเว็บและจึงHTTP
เป็นตัวเลือกที่สมบูรณ์แบบ HTTP
ยังเป็นโปรโตคอลเดียวที่กล่าวถึงในเอกสารของ Roy Fielding
แม้ว่า REST และ SOAP จะแตกต่างกันอย่างชัดเจน แต่คำถามก็ให้ความกระจ่างถึงความจริงที่ว่าREST
และHTTP
มักใช้ควบคู่กัน สาเหตุหลักมาจากความเรียบง่ายของ HTTP และการจับคู่ที่เป็นธรรมชาติกับหลักการ RESTful
การสื่อสารกับไคลเอนต์ - เซิร์ฟเวอร์
สถาปัตยกรรมไคลเอนต์ - เซิร์ฟเวอร์มีการแยกความกังวลอย่างชัดเจน แอปพลิเคชันทั้งหมดที่สร้างในสไตล์ RESTful จะต้องเป็นไคลเอนต์ - เซิร์ฟเวอร์ด้วย
ไร้สัญชาติ
แต่ละคำขอของไคลเอนต์แต่ละครั้งไปยังเซิร์ฟเวอร์กำหนดให้สถานะเป็นตัวแทนอย่างสมบูรณ์ เซิร์ฟเวอร์จะต้องสามารถเข้าใจคำขอของลูกค้าได้อย่างสมบูรณ์โดยไม่ต้องใช้บริบทของเซิร์ฟเวอร์หรือสถานะเซสชันของเซิร์ฟเวอร์ เป็นไปตามที่ทุกรัฐจะต้องเก็บไว้ในไคลเอนต์ เราจะหารือเกี่ยวกับการเป็นตัวแทนไร้สัญชาติในรายละเอียดเพิ่มเติมในภายหลัง
แคชได้
อาจมีการใช้ข้อ จำกัด แคชจึงทำให้สามารถทำเครื่องหมายข้อมูลตอบกลับว่าเป็นแคชหรือไม่สามารถเข้าถึงได้ ข้อมูลใด ๆ ที่ทำเครื่องหมายเป็นแคชสามารถนำมาใช้ใหม่เป็นการตอบสนองต่อคำขอที่ตามมาเหมือนกัน
ชุดอินเตอร์เฟส
ส่วนประกอบทั้งหมดจะต้องโต้ตอบผ่านส่วนต่อประสานที่เป็นชุดเดียว เนื่องจากการโต้ตอบส่วนประกอบทั้งหมดเกิดขึ้นผ่านอินเทอร์เฟซนี้การโต้ตอบกับบริการต่างๆจึงง่ายมาก อินเทอร์เฟซเหมือนกัน! นี่ก็หมายความว่าการเปลี่ยนแปลงการดำเนินการสามารถแยกได้ การเปลี่ยนแปลงดังกล่าวจะไม่ส่งผลกระทบต่อการทำงานร่วมขององค์ประกอบพื้นฐานเพราะอินเทอร์เฟซที่เหมือนกันไม่เปลี่ยนแปลงเสมอ ข้อเสียอย่างหนึ่งคือคุณติดอยู่กับส่วนต่อประสาน หากสามารถเพิ่มประสิทธิภาพให้กับบริการที่เฉพาะเจาะจงโดยการเปลี่ยนอินเทอร์เฟซคุณจะโชคไม่ดีเนื่องจาก REST ไม่อนุญาตสิ่งนี้ อย่างไรก็ตามในแง่ที่สดใส REST นั้นได้รับการปรับให้เหมาะกับเว็บดังนั้นความนิยมของ REST ผ่าน HTTP ก็เหลือเชื่อ
แนวคิดข้างต้นแสดงถึงการกำหนดลักษณะของ REST และสร้างความแตกต่างของสถาปัตยกรรม REST จากสถาปัตยกรรมอื่น ๆ เช่นบริการบนเว็บ มันจะมีประโยชน์ที่จะต้องทราบว่าบริการ REST เป็นบริการเว็บ แต่บริการเว็บไม่จำเป็นต้องเป็นบริการ REST
ดูโพสต์บล็อกนี้ในหลักการออกแบบ RESTสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับRESTและสัญลักษณ์แสดงหัวข้อย่อยที่ระบุไว้ด้านบน
ฉันชอบคำตอบของ Brian R. Bondy ฉันแค่อยากจะเพิ่มที่วิกิพีเดียให้คำอธิบายที่ชัดเจนของREST บทความแตกต่างจาก SOAP
REST เป็นการแลกเปลี่ยนข้อมูลสถานะทำได้ง่ายที่สุด
SOAP เป็นโปรโตคอลข้อความที่ใช้ XML
หนึ่งในเหตุผลหลักที่ผู้คนจำนวนมากย้ายจาก SOAP เป็น REST ก็คือมาตรฐาน WS- * (เรียกว่า WS splat) ที่เกี่ยวข้องกับบริการเว็บที่ใช้ SOAP นั้นมีความซับซ้อนอย่างมาก ดูวิกิพีเดียสำหรับรายการข้อกำหนด ข้อมูลจำเพาะแต่ละข้อมีความซับซ้อนมาก
แก้ไข: ด้วยเหตุผลบางอย่างลิงค์ไม่แสดงอย่างถูกต้อง REST = http://en.wikipedia.org/wiki/REST
WS- * = http://en.wikipedia.org/wiki/WS- *
ทั้งเว็บเซอร์วิส SOAP และเว็บเซอร์ REST สามารถใช้โปรโตคอล HTTP และโปรโตคอลอื่น ๆ ได้เช่นกัน (เพียงพูดถึง SOAP สามารถเป็นโปรโตคอลพื้นฐานของ REST ได้) ฉันจะพูดคุยเกี่ยวกับโปรโตคอล HTTP ที่เกี่ยวข้องกับ SOAP และ REST เท่านั้นเพราะนี่เป็นการใช้งานบ่อยที่สุดของพวกเขา
SOAP ("ง่าย" โปรโตคอลการเข้าถึงวัตถุ) เป็นโปรโตคอล (และมาตรฐาน W3C ) มันกำหนดวิธีการสร้างส่งและประมวลผลข้อความสบู่
ข้อความ SOAP เป็นเอกสาร XML ที่มีโครงสร้างเฉพาะ: ประกอบด้วยซองจดหมายซึ่งมีส่วนหัวและส่วนเนื้อหา เนื้อความประกอบด้วยข้อมูลจริง - เราต้องการส่ง - ในรูปแบบ XML มีสองรูปแบบการเข้ารหัสแต่เรามักจะเลือกตัวอักษรซึ่งหมายความว่าแอปพลิเคชันของเราหรือไดรเวอร์ SOAP ของมันจะทำให้เป็นอันดับ XML และ unserialization ของข้อมูล
ข้อความ SOAP จะเดินทางเป็นข้อความ HTTP ที่มีประเภทย่อย SOAP + XML MIME ข้อความ HTTP เหล่านี้สามารถเป็นส่วนได้หลายทางเลือกดังนั้นเราสามารถแนบไฟล์กับข้อความ SOAP
เห็นได้ชัดว่าเราใช้สถาปัตยกรรมไคลเอนต์ - เซิร์ฟเวอร์ดังนั้นลูกค้า SOAP ส่งคำขอไปยังเว็บเซิร์ฟเวอร์ SOAP และบริการส่งคำตอบกลับไปยังลูกค้า เว็บเซอร์ส่วนใหญ่ใช้ไฟล์ WSDL เพื่ออธิบายบริการ ไฟล์ WSDL มี XML Schema (XSD ต่อจากนี้) ของข้อมูลที่เราต้องการส่งและการเชื่อมโยง WSDL ซึ่งกำหนดวิธีการที่เว็บเซอร์ถูกผูกไว้กับโปรโตคอล HTTP มีสองรูปแบบที่มีผลผูกพัน: RPC และเอกสาร โดยการโยงลักษณะ RPC เนื้อความ SOAP จะมีการแสดงการเรียกใช้การดำเนินการด้วยพารามิเตอร์ (คำร้องขอ HTTP) หรือค่าส่งคืน (การตอบกลับ HTTP) พารามิเตอร์และค่าส่งคืนได้รับการตรวจสอบกับ XSD โดยลักษณะเอกสารที่มีผลผูกพันร่างกาย SOAP มีเอกสาร XML ซึ่งมีการตรวจสอบกับ XSD ฉันคิดว่ารูปแบบการรวมเอกสารนั้นเหมาะสมกับระบบที่ใช้เหตุการณ์เป็นหลัก แต่ฉันไม่เคยใช้รูปแบบการผูกนั้น ลักษณะการโยง RPC นั้นแพร่หลายมากขึ้นดังนั้นคนส่วนใหญ่ใช้ SOAP สำหรับวัตถุประสงค์ XML / RPC โดยแอปพลิเคชันแบบกระจาย เว็บเซอร์มักจะพบกันโดยขอเซิร์ฟเวอร์UDDI เซิร์ฟเวอร์ UDDI เป็นการลงทะเบียนซึ่งเก็บตำแหน่งของเว็บเซอร์
ดังนั้น - ในความคิดของฉัน - เว็บเซอร์วิส SOAP ที่แพร่หลายที่สุดใช้สไตล์การผูก RPC และการเข้ารหัสตามตัวอักษรและมีคุณสมบัติดังต่อไปนี้:
REST (Representational State Transfer) เป็นรูปแบบสถาปัตยกรรมที่อธิบายไว้ในวิทยานิพนธ์ของ Roy Fielding ไม่กังวลเกี่ยวกับโปรโตคอลเช่น SOAP มันเริ่มต้นด้วยรูปแบบสถาปัตยกรรมแบบ null โดยไม่มีข้อ จำกัด และกำหนดข้อ จำกัด ของสถาปัตยกรรม REST ทีละตัว คนใช้ระยะสงบสำหรับ webservices ซึ่งตอบสนองทุกความ จำกัด ส่วนที่เหลือ แต่ตามรอยฟิลดิงไม่มีสิ่งต่างๆเช่นระดับ REST เมื่อเว็บเซอร์ไม่พบกับข้อ จำกัด ของ REST ทุก ๆ ครั้งมันจะไม่ใช่เว็บเซอร์ของ REST
ชุดอินเตอร์เฟส
https://example.com/api/v1/users?offset=50&count=25
เช่น URL มีข้อกำหนดบางอย่างตัวอย่างเช่น URL ที่มีเส้นทางเดียวกัน แต่แบบสอบถามที่แตกต่างกันไม่เหมือนกันหรือส่วนเส้นทางควรมีข้อมูลแบบลำดับชั้นของ URL และส่วนแบบสอบถามควรมีข้อมูลที่ไม่ใช่ลำดับชั้น นี่คือพื้นฐานของวิธีการสร้าง URL โดย REST Btw โครงสร้าง URL นั้นสำคัญสำหรับนักพัฒนาบริการเท่านั้นไคลเอ็นต์ REST จริงไม่เกี่ยวข้องกับมัน อีกคำถามที่ถามบ่อยคือการกำหนดเวอร์ชัน API ซึ่งเป็นคำถามที่ง่ายเพราะตาม Fielding สิ่งเดียวที่คงที่โดยทรัพยากรคือซีแมนทิกส์ หากซีแมนทิกส์เปลี่ยนคุณสามารถเพิ่มหมายเลขเวอร์ชันใหม่ได้ คุณสามารถใช้การกำหนดเวอร์ชันคลาสสิค3 หมายเลขและเพิ่มเฉพาะหมายเลขหลักใน URL (https://example.com/api/v1/
) https://example.com/api/v2/
ดังนั้นโดยย้อนกลับการเปลี่ยนแปลงที่เข้ากันได้ไม่มีอะไรเกิดขึ้นจากการเปลี่ยนแปลงที่เข้ากันได้ย้อนหลังไม่ใช่คุณจะมีความหมายที่ไม่เข้ากันได้ย้อนหลังกับรากใหม่ API ดังนั้นลูกค้าเก่าจะไม่แตกเพราะพวกเขาสามารถใช้https://example.com/api/v1/
กับความหมายเก่าPATCH https://example.com/api/v1/users/1 {name: "Mrs Smith"}
คำขอโดยที่การ{name: "Mrs Smith"}
แสดงของ JSON ของสถานะทรัพยากรที่ตั้งใจไว้คืออีกชื่อใหม่ สิ่งนี้เกิดขึ้นในทางกลับกันบริการส่งการมอบทรัพยากรให้ลูกค้าเพื่อเปลี่ยนสถานะของพวกเขา ตัวอย่างเช่นหากเราต้องการอ่านชื่อใหม่เราสามารถส่งGET https://example.com/api/v1/users/1?fields="name"
คำขอดึงข้อมูลซึ่งส่งผลให้200 ok, {name: "Mrs Smith"}
คำตอบ ดังนั้นเราจึงสามารถใช้การเป็นตัวแทนนี้เพื่อเปลี่ยนสถานะลูกค้าตัวอย่างเช่นเราสามารถแสดง "ยินดีต้อนรับสู่หน้าของเรา Mrs Smith!" ข่าวสาร ทรัพยากรสามารถมีการรับรองมากมายขึ้นอยู่กับตัวระบุทรัพยากร (URL) หรือaccept
ส่วนหัวที่เราส่งไปพร้อมกับคำขอ ตัวอย่างเช่นเราสามารถส่งภาพของ Mrs Smith (อาจจะไม่ใช่ภาพเปลือย) หากimage/jpeg
มีการร้องขอHypermedia เป็นเอ็นจินของสถานะแอปพลิเคชัน (HATEOAS ต่อจากนี้) - Hypermedia เป็นประเภทสื่อที่สามารถมีไฮเปอร์ลิงก์ โดยเว็บเราตามลิงค์ - อธิบายโดยรูปแบบสื่อสิ่งพิมพ์ (ปกติคือ HTML) - เพื่อให้บรรลุเป้าหมายแทนที่จะพิมพ์ URL ลงในแถบที่อยู่ ส่วนที่เหลือเป็นไปตามแนวคิดเดียวกันการรับรองที่ส่งโดยบริการสามารถมีการเชื่อมโยงหลายมิติ เราใช้ไฮเปอร์ลิงก์เหล่านี้เพื่อส่งคำขอไปยังบริการ ด้วยการตอบสนองเราได้รับข้อมูล (และอาจมีลิงก์มากกว่า) ซึ่งเราสามารถใช้ในการสร้างสถานะไคลเอนต์ใหม่และอื่น ๆ ... นั่นคือเหตุผลที่ไฮเปอร์มีเดียเป็นกลไกของสถานะแอปพลิเคชัน (สถานะลูกค้า) คุณอาจสงสัยว่าลูกค้าจดจำและติดตามไฮเปอร์ลิงก์ได้อย่างไร โดยมนุษย์มันค่อนข้างง่ายเราอ่านชื่อของลิงก์อาจเติมฟิลด์อินพุตและหลังจากนั้นเพียงคลิกเดียวJSON-LDกับHydra ) หรือกับโซลูชันเฉพาะของสื่อหลายมิติ (ตัวอย่างเช่นการเชื่อมโยงของ IANAและประเภท MIME เฉพาะของผู้ขายโดยHAL + JSON ) มีหลายรูปแบบXMLและJSON ไฮเปอร์มีเดียที่สามารถอ่านได้ของเครื่องมีเพียงรายการสั้น ๆ :
บางครั้งมันก็ยากที่จะเลือก ...
ดังนั้นเว็บเซอร์ REST จึงแตกต่างจาก SOAP webservice (ด้วยสไตล์การผูก RPC และการเข้ารหัสตามตัวอักษร)
และอื่น ๆ ...
เว็บเซอร์วิส SOAP RPC ไม่ตรงตามข้อ จำกัด REST ทั้งหมด:
ฉันจะเริ่มด้วยคำถามที่สอง: Web Services คืออะไร ด้วยเหตุผลที่ชัดเจน
WebServices เป็นส่วนหนึ่งของตรรกะ (ซึ่งคุณอาจอ้างถึงอย่างชัดเจนว่าเป็นวิธีการ) ที่เปิดเผยการทำงานหรือข้อมูลบางอย่าง การใช้งานของลูกค้า (การพูดทางเทคนิคการบริโภคคือคำ) เพียงแค่ต้องรู้ว่าพารามิเตอร์คืออะไรที่วิธีการที่จะยอมรับและประเภทของข้อมูลที่จะส่งคืน (ถ้าเป็นเช่นนั้น)
ลิงค์ต่อไปนี้บอกว่าทั้งหมดนี้เกี่ยวกับREST & SOAPในลักษณะที่ชัดเจนมาก
หากคุณต้องการทราบว่าจะเลือก (REST หรือ SOAP) เมื่อใดควรเลือกเหตุผลอื่น ๆ เพิ่มเติม!
SOAP และ REST อ้างถึงวิธีที่ระบบต่าง ๆ จะพูดคุยซึ่งกันและกัน
ส่วนที่เหลือทำสิ่งนี้โดยใช้เทคนิคที่คล้ายกับการสื่อสารที่เบราว์เซอร์ของคุณมีกับเว็บเซิร์ฟเวอร์: ใช้ GET เพื่อขอหน้าเว็บโพสต์ในฟิลด์แบบฟอร์ม ฯลฯ
SOAP ให้สิ่งที่คล้ายกัน แต่ทำทุกอย่างผ่านการส่งบล็อกของ XML ไปมา องค์ประกอบสำคัญอีกประการของ SOAP คือ WSDL ซึ่งเป็นเอกสาร XML ที่อธิบายหน้าที่และองค์ประกอบของข้อมูลที่ได้รับการสนับสนุน WSDL สามารถใช้ในการ "ค้นพบ" โดยทางโปรแกรมได้ว่าฟังก์ชันใดบ้างที่ได้รับการสนับสนุนรวมถึงการสร้างโค้ดโปรแกรมมิง
ฉันคิดว่ามันง่ายเหมือนที่ฉันจะอธิบายได้ ได้โปรดใครก็ตามยินดีที่จะแก้ไขฉันหรือเพิ่มในนี้
SOAP เป็นรูปแบบข้อความที่ใช้โดยระบบที่ตัดการเชื่อมต่อ (เช่นผ่านอินเทอร์เน็ต) เพื่อแลกเปลี่ยนข้อมูล / ข้อมูล มันทำกับข้อความ XML ที่ไปและกลับ
บริการเว็บส่งหรือรับข้อความ SOAP พวกเขาทำงานแตกต่างกันไปขึ้นอยู่กับภาษาที่พวกเขาเขียน
ปัญหาของ SOAP คือมันขัดแย้งกับอุดมคติที่อยู่เบื้องหลัง HTTP stack มิดเดิลแวร์ใด ๆ ควรสามารถทำงานกับคำร้องขอ HTTP โดยไม่เข้าใจเนื้อหาของคำร้องขอหรือการตอบกลับ แต่ตัวอย่างเช่นเซิร์ฟเวอร์แคช HTTP ปกติจะไม่ทำงานกับคำร้องขอ SOAP โดยไม่ทราบว่าส่วนใดของเนื้อหา SOAP สำหรับการแคช SOAP ใช้ HTTP เป็น wrapper สำหรับโปรโตคอลการสื่อสารของตนเองเช่น proxy
REST เป็นรูปแบบสถาปัตยกรรมสำหรับการออกแบบแอปพลิเคชันเครือข่าย แนวคิดคือแทนที่จะใช้กลไกที่ซับซ้อนเช่น CORBA, RPC หรือ SOAP เพื่อเชื่อมต่อระหว่างเครื่องใช้ HTTP ธรรมดาเพื่อโทรระหว่างเครื่อง
SOAP - "Simple Object Access Protocol"
SOAPเป็นเพียงเล็กน้อยของการถ่ายโอนข้อความหรือข้อมูลจำนวนเล็กน้อยผ่านทางอินเทอร์เน็ต ข้อความSOAPถูกจัดรูปแบบในXMLและโดยทั่วไปแล้วจะถูกส่งไปควบคุมHTTP HTTP
REST - "การโอนย้ายสถานะของการนำเสนอ"
RESTเป็นการดำเนินการขั้นพื้นฐานของเหตุการณ์ที่ไม่แน่นอนและการรับข้อมูลระหว่างพัดลมและเซิร์ฟเวอร์และมันไม่ได้มีมาตรฐานที่กำหนดไว้มากมาย คุณสามารถส่งและรับข้อมูลเป็นJSON , XMLหรือแม้แต่ข้อความธรรมดา มันน้ำหนักเบาเมื่อเทียบกับสบู่
SOAPbased Web Services ในระยะสั้นโมเดล SOAPbased Services มองว่าโลกเป็นระบบนิเวศของเพื่อนร่วมงานที่ไม่สามารถควบคุมซึ่งกันและกันได้ แต่ต้องทำงานร่วมกันด้วยการเคารพสัญญาที่เผยแพร่ มันเป็นรูปแบบที่ถูกต้องของโลกแห่งความยุ่งเหยิงและสัญญาที่ใช้เมทาดาทาเป็นรูปแบบของ SOAP Service Interface
เรายังสามารถเชื่อมโยง SOAP กับ XMLbased Remote Procedure Calls ได้ แต่เทคโนโลยี SOAPbased Web Services ได้กลายเป็นรูปแบบการส่งข้อความที่ยืดหยุ่นและทรงพลัง
SOAP ถือว่าระบบทั้งหมดนั้นมีความเป็นอิสระและไม่มีระบบใดที่มีความรู้เกี่ยวกับ internals ของฟังก์ชันการทำงานอื่นและภายใน ระบบดังกล่าวส่วนใหญ่สามารถทำได้คือการส่งข้อความถึงกันและหวังว่าพวกเขาจะดำเนินการ ระบบเผยแพร่สัญญาที่พวกเขาทำเพื่อเป็นเกียรติและระบบอื่น ๆ พึ่งพาสัญญาเหล่านี้เพื่อแลกเปลี่ยนข้อความกับพวกเขา
สัญญาระหว่างระบบเรียกรวมกันว่าเมทาดาทาและประกอบด้วยรายละเอียดการบริการรูปแบบการแลกเปลี่ยนข้อความที่สนับสนุนและนโยบายที่ควบคุมคุณภาพของการบริการ (บริการอาจจำเป็นต้องเข้ารหัสเข้ารหัสส่งมอบได้อย่างน่าเชื่อถือ ข้อมูลจำเพาะของข้อมูล (เอกสารข้อความ) ที่ระบบจะส่งและรับ เอกสารอธิบายโดยใช้ภาษาคำอธิบาย XML เช่น XML Schema Definition ตราบใดที่ทุกระบบปฏิบัติตามสัญญาที่ตีพิมพ์พวกเขาสามารถทำงานระหว่างกันได้และการเปลี่ยนแปลงภายในของระบบจะไม่ส่งผลกระทบใด ๆ ทุกระบบมีหน้าที่รับผิดชอบในการแปลการติดตั้งภายในของตนเองไปยังและจากสัญญา
REST - การถ่ายโอนสถานะของการนำเสนอ โปรโตคอลทางกายภาพคือ HTTP โดยทั่วไป REST คือทรัพยากรที่แตกต่างกันทั้งหมดบนเว็บที่สามารถระบุได้โดย URL การดำเนินการทั้งหมดที่สามารถดำเนินการกับทรัพยากรเหล่านี้สามารถอธิบายได้ด้วยชุดคำกริยาที่ จำกัด (กริยา“ CRUD”) ซึ่งจะเปลี่ยนแผนที่เป็นกริยา HTTP
ส่วนที่เหลือเป็น "เฮฟวี่เวท" น้อยกว่า SOAP มาก