簡體   English   中英

“ Rest” API和“ Graph” API之間有什么區別

[英]What is difference between “Rest” API and “Graph” API

我正在Azure AD B2C中創建一個API項目,我想在其中創建自定義UI。 對於此要求,我想知道“ Rest” API和“ Graph” API中哪個更好。

誰能建議我使用哪個更好?

盡管經常提到 GraphQL 作為REST的替代品 ,但兩者實際上都解決了不同的問題。

首先,REST不是協議,而只是一種樣式,如果正確應用,它將使客戶端與服務器脫鈎。 因此,遵循REST原則的服務器將為客戶端提供采取進一步步驟所需的任何信息。 客戶端最初是在沒有先驗知識的情況下開始的,並通過發出請求和處理響應來動態學習。

盡管REST與協議無關,這意味着它可以建立在許多協議之上,但HTTP可能是最突出的協議。 RESTful客戶端的常見示例是我們都熟悉的Web瀏覽器。 首先,它會調用一個加書簽的URI或調用在地址欄中輸入的URI,然后從那里繼續。

HTTP不指定必須發送請求或響應的表示形式,而是將其留給協商它們的客戶端和服務器。 由於客戶端和服務器都可以依賴公共接口(HTTP),並且只能牢固地綁定到用於交換數據的已知媒體類型上,因此這有助於解耦。對等體無法以某種表示形式處理文檔(由於缺少相應的mime類型支持)將通過相應的錯誤消息指示其其他同伴。 因此,媒體類型只是數據可讀語法和數據有效載荷的語義可讀文檔,因此是REST體系結構中最重要的部分。 它教會了一個對等方如何解析和解釋接收到的有效負載,並使之真正有意義,盡管許多人仍將REST與基於JSON的HTTP API與過度設計的URI混淆了起來,他們付出了很多努力來為URI提供一些內容這實際上是一種邏輯意義,實際上客戶端和服務器都不會解釋它,因為它們可能會使用為URI提供的鏈接關系名稱。

另一方面,GraphQL是一種查詢語言,它使客戶端可以請求其要從服務器檢索的特定字段和元素。 粗略地說,它是用於Web的某種SQL。 因此,它必須事先具有可用數據的知識,以某種方式將客戶端耦合到服務器。 如果服務器將重命名某些字段,則盡管我不是GraphQL專家,但客戶端可能無法進一步檢索此類信息。

如上所述,REST通常與基於JSON的HTTP API混淆,該API允許對直接映射的DB條目/實體執行查詢。 請記住,REST並不禁止這樣做,盡管REST的重點是對等體的解耦,而不是某些Web公開數據庫條目的檢索方面。

在Azure AD及其API的上下文中,當您直接訪問Microsoft Graph服務時,將使用術語REST API。 您編寫所有http通信代碼,身份驗證,JSON解析等。

術語Graph API或Graph客戶端是對Microsoft開發的Graph Client SDK的引用,其中封裝了上述內容。

如果您的平台沒有SDK,則需要直接使用REST API。 否則,我建議使用SDK。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM