Odata ต้องการอะไรเมื่อฉันมี JSON


23

ฉันกำลังพยายามที่จะเข้าใจจุดของ Odata และเมื่อมันจะทำให้รู้สึก ตอนนี้ฉันทำงานอย่างไรฉันใช้ตัวควบคุม ASP.NET และ MVC / WebApi เพื่อทำให้เป็นอันดับ / ดีซีเรียลไลซ์ออบเจ็กต์ลงใน JSON และให้จาวาสคริปต์ทำอะไรบางอย่างกับมัน

จากสิ่งที่ฉันสามารถบอกได้ว่าประโยชน์ของ OData นั้นสามารถสืบค้นได้โดยตรงจาก URL ... แต่เนื่องจากฉันเขียนรหัสลูกค้าและเซิร์ฟเวอร์ไม่จำเป็นต้องทำเช่นนั้น

ใครบ้างที่เคยแยกผลลัพธ์ของแบบสอบถาม ODaya ใน javascript?

บางที OData เป็นอีกเรื่องเกี่ยวกับการให้จุดสิ้นสุดทั่วไปสำหรับไคลเอนต์ทั้งหมดเพื่อรับข้อมูลรายละเอียดจากแบบสอบถามที่ JSON ไม่ได้ให้ ดังนั้นถ้าฉันเป็นผู้ให้บริการข้อมูลฉันคิดว่าเป็นสิ่งที่ Odata ใช้เพื่ออะไร

ช่วยฉันเข้าใจวัตถุประสงค์และการใช้ REST / JSON / ODATA


2
เพื่อให้สิ่งที่ "ง่ายขึ้น" คุณอาจจะสนใจในการเชื่อมโยงข้อมูลที่แพลตฟอร์มข้อมูลที่เชื่อมโยง , SPARQLและรายการข้อมูลคำศัพท์ ทั้งหมดของพวกเขาเป็นสิ่งที่แตกต่างที่ให้บริการเพื่อวัตถุประสงค์ที่แตกต่างกันและสามารถใช้ร่วมกับJSONเช่นSPARQL 1.1 แบบสอบถามผลการค้นหารูปแบบ JSONและแน่นอนกับส่วนที่เหลือ
Trylks

คำตอบ:


42

JSON เป็นเพียงรูปแบบการแลกเปลี่ยนข้อมูลที่ใช้ JavaScript

REST เป็นรูปแบบสถาปัตยกรรมในขณะที่ OData เป็นเครื่องมือเฉพาะของ REST ที่ออกแบบมาเพื่อสร้างและใช้ข้อมูลซึ่งสนับสนุนสองรูปแบบคือ AtomPub และ JSON

ดังนั้นความแตกต่างระหว่าง JSON กับ REST ธรรมดาและ OData จึงเป็นตัวเลือกใน OData สำหรับการจัดการข้อมูลเช่นหากเราสืบค้นข้อมูลโดยใช้โปรโตคอล OData เราสามารถระบุตัวเลือกด้านล่างใน URI

  • $ orderby
  • $ ด้านบน
  • $ เฮี๊ยบ
  • $ กรอง
  • $ รูปแบบ
  • $ เลือก

เราสามารถฉายภาพเชื่อมโยงทรัพยากร ฯลฯ และตัวเลือกทั้งหมดเหล่านี้มีให้บริการนอกกรอบ ทีนี้ลองคิดดูว่าถ้าเราต้องจัดเตรียมฟีเจอร์ทั้งหมดเหล่านี้ในบริการ REST ของเราเองเราก็จะต้อง

  • ใช้ทั้งหมดของพวกเขา
  • สร้างการประชุม / คำหลักของเราเองสำหรับการดำเนินการที่แตกต่าง

มันไม่ได้เป็นเพียงงานจำนวนมาก แต่ยังนำไปสู่ความไม่สอดคล้องกันและสร้างช่วงการเรียนรู้สำหรับผู้บริโภคข้อมูลของเรา


5

สัญลักษณ์วัตถุ JSON หรือ JavaScript เป็นเพียงรูปแบบหรือมาตรฐานสำหรับข้อมูล มันเป็นรูปแบบที่ตกลงกันสำหรับการส่งบางสิ่งเช่นชื่อเข้าสู่ระบบหรือสิ่งที่ต้องใช้โดยบริการ REST

ดูส่วนนี้: http://en.wikipedia.org/wiki/JSON

แม้ว่าเริ่มแรกจะได้มาจากภาษาสคริปต์ JavaScript แต่ JSON เป็นรูปแบบข้อมูลที่ไม่ขึ้นกับภาษาและรหัสสำหรับการแยกวิเคราะห์และสร้างข้อมูล JSON นั้นพร้อมใช้งานในภาษาโปรแกรมที่หลากหลาย

มันไม่ใช่ส่วนหนึ่งของภาษาการเขียนโปรแกรมเฉพาะใด ๆ ดังนั้นระบบที่แตกต่างกันสามารถส่งผ่านข้อมูลได้ค่อนข้างง่ายหากพวกเขารู้ว่าพวกเขากำลังใช้ JSON

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

ดูส่วนนี้: http://en.wikipedia.org/wiki/Representational_state_transfer

วิธีคิดอย่างหนึ่งคือถ้าคุณต้องการเขียนบริการเว็บที่คอมพิวเตอร์หลายเครื่องสามารถพูดคุยกับ .. และแลกเปลี่ยนข้อมูล คุณสามารถเขียนบริการเว็บเพื่อรับข้อมูลผ่าน URL

 http://www.myservice.com/specialRESTService?name=punkouter

การตอบกลับอาจเป็นวัตถุ JSON ที่ส่งสัญญาณข้อมูลของคุณได้รับ

{
    "name": "punkouter",
    "status": "service downloaded your data",
}

ฉันไม่เคยได้ยินชื่อ OData ดังนั้นฉันจึงไป:

OData สร้างขึ้นบนโปรโตคอล AtomPub และ JSON โดยที่โครงสร้าง Atom เป็นซองจดหมายที่มีข้อมูลที่ส่งคืนจากคำขอ OData แต่ละคำขอ คำร้องขอ OData ใช้โมเดล REST สำหรับคำร้องขอทั้งหมด แต่ละคำสั่ง REST คือการร้องขอ POST, GET, PUT, PATCH หรือ DELETE http (การจับคู่กับ CRUD) โดยที่คำสั่งเฉพาะของคำสั่งนั้นอยู่ใน url

GET: รับชุดของเอนทิตี (เป็นเอกสารฟีด) หรือเอนทิตีเดียว (เป็นเอกสารรายการ)

POST: สร้างเอนทิตีใหม่จากเอกสารรายการ

PUT: อัพเดตเอนทิตีที่มีอยู่ด้วยเอกสารรายการ

PATCH: อัพเดทเอนทิตีที่มีอยู่ด้วยเอกสารรายการบางส่วน

ลบ: ลบเอนทิตี

เสียงเหมือน OData เป็นสิ่งที่เขียนขึ้นเพื่อเพิ่มสถาปัตยกรรมสไตล์วานิลลา REST .. แต่ดูเหมือนว่ามันจะช่วยให้คุณเพิ่มสิ่งต่าง ๆ เพื่อให้คุณไปได้แทนที่จะต้องเขียนสิ่งต่าง ๆ ตั้งแต่เริ่มต้นในภาษา C # หรือภาษาที่คุณใช้

หากคุณกำลังผลักดันให้คุณใช้งาน OData คุณจะยังคงใช้ JSON .. แต่อยู่ในกรอบงาน / มาตรฐาน OData ที่เขียนโดย Microsoft และคณะ

ใครบ้างที่เคยแยกผลลัพธ์ของแบบสอบถาม OData (sic) ใน javascript?

ใช่เนื่องจาก (ดูเหมือนว่า) กำลังใช้ JSON มันจะเป็นธรรมชาติอย่างสมบูรณ์แบบที่จะใช้ JS

บางที OData เป็นอีกเรื่องเกี่ยวกับการให้จุดสิ้นสุดทั่วไปสำหรับไคลเอนต์ทั้งหมดเพื่อรับข้อมูลรายละเอียดจากแบบสอบถามที่ JSON ไม่ได้ให้ ดังนั้นถ้าฉันเป็นผู้ให้บริการข้อมูลฉันคิดว่า Odata นั้นมีไว้เพื่ออะไร

Odata จะให้บริการ REST .. แต่ด้วยบริการมาตรฐานที่เพิ่มเข้ามาบนจุดสิ้นสุดของบริการ REST แบบ "ธรรมดา" ลูกค้าไม่สนใจว่าคุณใช้ OData หรือรีดบริการ C # ของคุณนานเท่าไหร่ เนื่องจากคำตอบอยู่ในรูปแบบที่ตกลงกัน (เช่น JSON) อย่างไรก็ตามสำหรับงานของคุณพวกเขาอาจต้องการใช้ OData เพราะมันมีคุณสมบัติมากมาย 'นอกกรอบ'


การทำงานไม่สนใจ .. ฉันแค่อยากจะรู้ว่าสิ่งที่ epurpose ของ Odata สำหรับ .. JSON เป็นเพียงวิธีในการแสดงข้อมูล .. และก็คือ ODATA .. แต่ .. ฉันเดาคำถามที่ฉันมีคือสถานการณ์ การใช้ REST และ JSON ที่ส่งคืนไม่เพียงพอ .. และการใช้ ODATA จะได้รับการพิจารณาอย่างไร
punkouter

ไม่ไม่ OData เป็นสถาปัตยกรรมบริการสงบ ... ที่ใช้ JSON เพื่อแสดงข้อมูล คุณจะไม่ได้อะไรจากการใช้ไลบรารี / มาตรฐาน OData .. ไม่มีอะไรที่ไม่สามารถเขียนด้วยตัวเองทางเทคนิค .. แต่การใช้ OData อาจช่วยคุณประหยัดเวลาถ้าคุณกำลังสร้างสิ่งต่าง ๆ ด้วย .. เมื่อเทียบกับการเขียนสิ่งต่าง ๆ ด้วยตัวคุณเอง
Erik

เจสัน แต่ฉันคิดว่า OData ส่งคืน XML หรือไม่ หรือเป็นทั้งสองอย่าง? ฉันสับสน
punkouter


จากลิงก์ของคุณ "OData รองรับสองรูปแบบสำหรับการแสดงทรัพยากร (คอลเลกชัน, รายการ, ลิงค์, ฯลฯ ) ที่จะเปิดเผย: รูปแบบ Atom ที่ใช้ XML และรูปแบบ JSON"
Erik

2

สำหรับคำถาม "ทำไม" มีคำจำกัดความที่ดีจริงๆในหนังสือRESTful Web APIsโดยหลักแล้ว OData จะใช้รูปแบบการรวบรวมโดยที่การรวบรวมเป็นทรัพยากรที่มีรายการทรัพยากรผ่านลิงก์


2

OData เป็นการใช้งานเฉพาะของบริการ RESTful ด้วยมาตรฐานสำหรับส่วนต่อประสาน ข้อได้เปรียบเมื่อคุณเปิดเผย API ของผลิตภัณฑ์ของคุณและบอกว่าเป็นไปตามมาตรฐาน OData สำหรับผู้ใช้ที่คุ้นเคยกับ OData แล้วสามารถใช้งานได้ทันทีโดยไม่ต้องเสียเวลาอ่านเอกสาร API

ข้อเสีย: ในขณะที่ OData นั้นยอดเยี่ยมในการเปิดเผยฐานข้อมูลพื้นฐานสเปคไม่รวมถึงการสนับสนุนการทำธุรกรรมและไม่สามารถใช้ในแอปพลิเคชันที่เราสามารถให้บริการ RESTful ที่ทำหน้าที่เป็นอินเทอร์เฟซฐานข้อมูล

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