目錄[隱藏][顯示]
- 1. 你對 REST 的理解是什麼?
- 2. REST API 是什麼意思?
- 3. URI到底是什麼?
- 4、RESTful Web Services的特點是什麼?
- 5. REST 的指導原則是什麼?
- 6. 提及 REST 支持的 HTTP 方法。
- 7. 描述一致界面的限制。
- 8. 什麼是 REST 資源?
- 9. JAX-RS 對您意味著什麼?
- 10. AJAX 和 REST 有什麼區別?
- 11. 你能列出一些 RESTful Web 服務的缺點嗎?
- 12. PUT 和 POST 技術的區別是什麼?
- 13. 你如何測試 RESTful Web 服務?
- 14. 描述現實世界中的 REST API。
- 15. 微服務架構是如何工作的?
- 16. 緩存到底是什麼?
- 17. 描述有效載荷。
- 18. 區分 SOAP 與 REST?
- 19. 傳輸層安全協議 (TLS) 可以與 REST 一起使用嗎?
- 20. 冪等方法:它們是什麼? 它如何應用於 RESTful Web 服務的世界?
- 21. HTTP Basic Authentication 的功能是什麼?
- 22. 你認為 GraphQL 是創建微服務架構的最佳選擇嗎?
- 23.安全和冪等HTTP方法的主要區別是什麼?
- 24. JAX-RS API 對 RESTful 根資源類意味著什麼?
- 25. Postman 到底是什麼,為什麼要使用它?
- 26. 如何保證 REST API 的安全?
- 結論
REST 的發展使 API 變得非常容易訪問,同時也展現了它們的全部力量和潛力。 REST API 因其面向資源的架構而易於創建和緩存。
此外,一直以來,RESTful API 都是其他重大發展的先驅,例如雲計算和基於微服務的設計。
因此,鑑於 REST API 開發人員如何為使用 RESTful 服務的企業提供競爭優勢,因此今天對 REST API 開發人員的需求不足為奇。 REST API 是一種流行的設計趨勢。
許多 IT 公司希望從 軟件開發商 並在技術面試中詢問。
以下是一些最典型的 REST API 面試問題,如果你想在 REST API 開發領域工作,這些問題將幫助你為各種公司的面試做好準備。
1. 你對 REST 的理解是什麼?
REST 是一種架構範例,用於設計基於超文本傳輸協議 (HTTP) 的基於 Web 的應用程序。
REST 定義了 Web 服務必須滿足的某些標準才能被視為 RESTful。 這些建議可確保使用標準化 HTTP 協議在客戶端和服務器之間快速有效地傳輸請求和資源。
2. REST API 是什麼意思?
稱為應用程序編程接口的軟件到軟件鏈接能夠實現其他獨立程序之間的通信和數據共享。 例如,新聞網站可以使用 Twitter API 自動發現相關推文並將其整合到新聞故事中。
遵循 REST 原則的 API 稱為 REST API,有時也稱為 RESTful API。 在 REST API 中,每條數據都作為資源進行處理,並被賦予不同的標準資源標識 (URI)。
例如,Twitter API 使每條推文成為可供客戶使用的可檢索資源。 用戶可以使用 Twitter API 發布推文和執行其他網站任務。
3. URI到底是什麼?
A 計算機網絡 可以使用 URI 或統一資源標識符來引用資源。 它是一種將一種資源與另一種資源分開的方法。 來源可能在線,也可能不在線。
由於它們的標準結構,URI 可以很容易地連接到各種類型的資源。 資源的位置或名稱與字符串一起包含在 URI 中。
URI 由路徑、方案、查詢和其他元素組成,但不包括協議。
使用協議,URL(統一資源定位器)用於在 Internet 上查找資源或通過它訪問資源。
4、RESTful Web Services的特點是什麼?
- 客戶端-服務器範式是服務的基礎。
- 服務可以通過使用 URI 來訪問資源。
- 該服務利用 HTTP 協議來獲取數據/資源、運行查詢和執行其他任務。
- 消息傳遞是用於在客戶端和服務器之間進行通信的方法的名稱。
- 這些服務還可以使用 SOAP 服務實現 REST 架構模式。
- 為了減少服務器對相同類型的重複請求的調用,這些服務還採用了緩存的思想。
5. REST 的指導原則是什麼?
REST API 必須滿足五個條件:
客戶端-服務器解耦:客戶端和服務器之間只能使用一系列請求和回復進行通信。 只有客戶端和服務器能夠分別發送請求和應答。 這一直截了當的想法使雙方能夠相互獨立地運作。
統一接口:所有客戶端-服務器連接必須有一個統一的協議。 這個 REST 協議是 HTTP。 因為每個應用程序都使用相同的語言請求和發送數據,所以一致的界面使集成更加簡單。
無狀態:服務器在無狀態通信中不保存任何先前請求或應答的記錄。 每個請求和回答都提供了完成交換所需的所有詳細信息。 無狀態通信提高了速度、節省了內存並減輕了服務器的壓力。 此外,它還避免了由於數據不完整而導致請求失敗的可能性。
分層系統:位於客戶端和 API 服務器之間的服務器稱為層。 這些額外的服務器執行各種服務,例如檢測垃圾郵件和優化速度。 REST 中的層是模塊化的,這意味著可以在不影響客戶端和 API 服務器之間的通信的情況下添加和刪除它們。
可緩存:如果服務器回答表明資源是否可緩存,客戶端可以緩存任何資源以提高速度。
按需編碼:作為響應,API 可以將可執行的計算機代碼傳輸給客戶。 然後,客戶端應用程序可以在自己的後端運行代碼。
6. 提及 REST 支持的 HTTP 方法。
REST 支持的 HTTP 方法有:
- GET:此方法請求指定 URL 處的資源。 不應包含請求正文,因為它將被忽略。 可以將其緩存在本地或服務器上。
- POST:此方法將數據發送到服務進行處理,服務通常應返回新的或更改的資源。
- PUT:資源在請求 URL 處更新。
- DELETE:資源在請求 URL 處被刪除。
- 選項:它標識支持的方法。
- HEAD:返回請求 URL 的元數據。
7. 描述一致界面的限制。
為了將客戶端與服務器分開,需要一個一致的接口。
要實現一致的界面,需要以下四個約束:
- 資源識別:客戶端請求必須使用標準資源 ID 來識別資源 (URI)
- 使用這些表示進行資源操作:當客戶端從服務器獲得資源表示時,他們擁有能夠更改資源狀態所需的所有信息。
- 自描述消息:消息包括接收者理解它們所需的所有元數據和其他信息。
- 超媒體作為應用程序狀態引擎:客戶端-服務器通信的通道是超媒體,例如 HTML,客戶端不需要特定於 API 的文檔來理解服務器的答案。
8. 什麼是 REST 資源?
資源是 REST 架構中 RESTful Web 服務的基本組件。 它們包括 API 客戶端需要訪問的所有關鍵信息。
任何類型的資源,例如 HTML 頁面、圖像、視頻或 API 活動所需的任何其他內容,都可以通過客戶端-服務器系統中的服務器進行訪問。
資源由統一資源標識符標識。 文本、JSON 或 XML 都是可接受的資源表示形式。 話雖如此,表示的格式沒有限制。
9. JAX-RS 對您意味著什麼?
借助用於 RESTful Web 服務的 Java API(通常稱為 JAX-RS),在 Java 中創建 RESTful Web 服務更加簡單。 開發人員可以使用提供的註釋來描述資源和可以對其執行的操作。
10. AJAX 和 REST 有什麼區別?
阿賈克斯:
- Ajax 是一組允許動態更新 用戶界面 元素,而無需重新加載頁面。
- Ajax 刪除了客戶端和服務器之間的異步通信。
休息:
- REST 需要服務器和客戶端之間的通信。
- 資源的利用對於 REST 使用的 URL 結構和請求/響應模式很重要。
11. 你能列出一些 RESTful Web 服務的缺點嗎?
由於服務遵循無狀態的概念,因此無法保持會話。 (客戶端負責在整個會話模擬過程中傳遞會話 ID。)
安全約束不是 REST 的基礎。 使用它的協議繼承了安全預防措施。 因此,在採取安全措施(例如集成基於 SSL/TLS 的身份驗證)時要小心謹慎,這一點很重要。
12. PUT 和 POST 技術的區別是什麼?
放:
- PUT 響應沒有緩存。
- 冪等(即多個請求將產生相同的結果)
- 請求的有效負載更新或替換目標資源。
POST:
- 冪等非(即多個請求將產生多個相同資源)
- Web 服務器根據預期資源處理請求的有效負載。
- 如果包含適當的緩存控制標頭,則可以緩存 POST 回复。
13. 你如何測試 RESTful Web 服務?
RESTful Web 服務測試可以藉助許多工具,包括 Swagger 和 Postman。 後者的豐富功能使得檢查請求參數(如查詢參數、標頭和響應標頭)成為可能。
Postman 可用於向端點發出請求並顯示結果。 並且可以從這些答案中創建 XML 和 JSON。
Postman 和 Swagger 都提供了極其相似的功能。 另一方面,Swagger 還提供端點文檔等功能。
14. 描述現實世界中的 REST API。
- 旅行和票務網站可以利用航空公司通過 API 提供的航班時間和定價。
- 為了讓地圖和導航應用程序(如穀歌地圖)使用它們,公共交通機構經常通過 API 實時公開他們的數據。
- 天氣應用程序使用交換天氣數據的開放 API 來顯示天氣信息。
- 開發人員可以通過其許多託管 API 訪問 Google 地圖的地圖數據。 開發人員使用這些 API 在他們的應用程序和網站中嵌入動態地圖。
15. 微服務架構是如何工作的?
- 各種客戶使用各種設備發送請求。
- 在確認客戶的身份後,身份提供者會提供安全令牌。
- 客戶端請求由 API Gateway 管理。
- 系統的所有材料都保留為靜態內容。
- 管理工具檢查節點上的服務平衡和任何故障。
- 服務發現有助於發現微服務之間的通信路徑。
- 數據中心和代理服務器構成了稱為內容交付網絡的分散網絡系統。
- 遠程服務提供遠距離信息訪問。
16. 緩存到底是什麼?
將服務器答案的副本臨時保存在某處(例如計算機內存)以便以後更快地訪問它的做法稱為緩存。
在使用 REST API 時,緩存通過減少服務器為滿足請求而必須執行的工作量來提高服務器速度。 由於緩存,使用 API 的應用程序運行得更快,因為它們不必在每次需要資源時都提交新請求。
HTTP 響應標頭的 Cache-Control 字段包含有關資源在需要再次訪問之前可以被客戶端緩存多長時間的信息。
17. 描述有效載荷。
REST 中的有效負載是指 HTTP 響應正文中包含的信息。 客戶使用 GET 技術來請求相關數據。
包含推文文本的文檔以及將推文放在網站上的任何必要文件都將包含在有效負載中,例如,如果您向 Twitter API 詢問特定推文。 此外,可以使用 POST 方法將有效負載包含在 HTTP 請求中。
18. 區分 SOAP 與 REST?
- 與只能處理 XML 的 SOAP 不同,REST 支持更廣泛的資源格式,包括 XML、文本、HTML、圖片、視頻等。
- 當安全性對在線應用程序至關重要時,SOAP 很有幫助。 當事務必須安全完成時,不能使用 REST,因為它不是特別安全。
- 由於 SOAP 只是一種協議,REST 可以在其 Web 服務中使用它,但反之則不行。
- 雖然 REST 只是一種用於開發 Web 服務的架構模式,並遵守某些限制,例如客戶端-服務器設置、無狀態、可緩存響應、分層系統和一致的接口,但 SOAP 是一種按照特定標準運行的協議,必須嚴格遵守至。
- REST 使用通用資源標識符 (URI),而 SOAP 使用服務接口向客戶端應用程序提供其功能。 REST 的帶寬需求比 SOAP 低,因為 SOAP 消息的信息量更大。
19. 傳輸層安全協議 (TLS) 可以與 REST 一起使用嗎?
事實上,我們可以。 REST 客戶端和服務器的通信通過 TLS 加密,該協議還為客戶端提供了一種驗證服務器的方法。
由於它是安全套接字層的替代品,因此它被用於安全通信 (SSL)。 使用 HTTPS 實現 RESTful Web 服務是成功的,因為它與 TLS 和 SSL 有效協作。
REST 繼承了它實現的協議的特性,這是這裡需要注意的一件事。 因此,安全保護依賴於 REST 使用的協議。
20. 冪等方法:它們是什麼? 它如何應用於 RESTful Web 服務的世界?
在URI相同的情況下,一個請求中的一些HTTP方法無論是投遞一次還是投遞多次,對服務器的影響都是一樣的。 冪等技術就是所謂的。
例如,無論使用 GET 方法運行 URI 多少次,服務器總是會遇到相同的結果。 冪等方法包括 GET、PUT 和 PATCH,僅舉幾例。
冪等 HTTP 方法是 RESTful 使用的一些方法 網絡應用. 它們是保證 RESTful Web 服務活動的一致性所必需的。
使用 REST API 的客戶可能會出現代碼錯誤,從而迫使 REST API 意外地發出重複請求。 這些調用有可能濫用資源。
21. HTTP Basic Authentication 的功能是什麼?
當使用基本身份驗證作為 API 的一部分時,用戶必須提交用戶名和密碼,這些用戶名和密碼由瀏覽器以“用戶名:密碼”和 base64 編碼的形式連接起來。
在來自瀏覽器的每個 HTTP 請求中,編碼值作為“Authorization”標頭的值傳遞。 因為憑證只是經過編碼,所以建議在發送 HTTPS 請求時使用這種形式,因為它們不安全,如果不使用安全協議,任何人都可以截獲。
22. 你認為 GraphQL 是創建微服務架構的最佳選擇嗎?
微服務和 GraphQL 完美結合,因為 GraphQL 使您的微服務架構對您的客戶保密。
在前端,您希望所有數據都來自一個 API,而在後端,您希望將其劃分為微服務。 我知道實現兩者的最佳技術是使用 GraphQL。
它使您能夠將後端劃分為微服務,同時仍為每個應用程序提供單個 API 並啟用來自各種服務的數據的連接。
23.安全和冪等HTTP方法的主要區別是什麼?
當通過同一請求調用一次或多次時,冪等方法會產生相同的結果。 PUT 方法是冪等的。
所有安全方法都是冪等的,但並非所有冪等方法都是安全的,因為安全方法不會改變資源。 例如,GET 是安全的,因為它只檢索數據而不更改資源。
此外,它是冪等的,這意味著它在調用時總是返回相同的答案。
24. JAX-RS API 對 RESTful 根資源類意味著什麼?
Java Enterprise Edition 提供了符合 JAX-RS API 要求的類和接口。 借助 JAX-RS,以 REST 架構風格創建 Java Web 服務變得更加容易。
在 JAX-RS API 中,根資源類只是“普通的舊 Java 對象”或 POJO。 為了實現必要的 Web 資源,他們使用 JAX-RS 註釋。
它們要么具有@path 註釋,要么它們的至少一個方法具有@path 註釋。 它們可以概括為帶有處理 API 端點的方法的 Java 類。
25. Postman 到底是什麼,為什麼要使用它?
一個名為 Postman 的 API 開發工具用於創建、測試和修改 API。 開發人員可以將這個工具用於 API 所需的任何功能。 它簡化並方便了開發人員的工作。
Postman 可以輕鬆進行各種 HTTP 查詢,包括 GET、POST、PUT 和 PATCH,保存環境以供以後使用,並將 API 轉換為多種不同語言的代碼。
使用 Postman,API 週期的每個階段都變得更簡單,並且協作得到簡化,以加快 API 開發。
此外,它使開發人員能夠管理文檔、規範、測試用例、流程和 API 目錄。
26. 如何保證 REST API 的安全?
由於 REST API 不像 SOAP API 那樣使用嚴格的安全保護措施,因此不應使用它們發送或檢索敏感數據。
但是,值得信賴的 REST API 繼續集成安全控制,以實現安全可靠的數據傳輸。
- 身份驗證和授權:向 API 發出的每個請求都必須通過這兩項檢查。 通過身份驗證驗證客戶端的身份和通過授權驗證他們有權訪問所請求的資源是兩個不同的過程。
- 驗證:在 API 授予對其資源的訪問權限之前,仍必須在身份驗證和授權後檢查請求中是否存在可能有害的代碼。 因此,服務器將對注入攻擊開放。
- 驗證:在 API 授予對其資源的訪問權限之前,仍必須在身份驗證和授權後檢查請求中是否存在可能有害的代碼。 因此,服務器將對注入攻擊開放。
- 加密:TLS/SSL 加密保護客戶端和服務器之間的連接,防止黑客攔截請求和應答。
- 速率限制技術(例如限制和節流)可保護服務器免受 DDoS 等旨在降級或崩潰的暴力攻擊。
- URI 中沒有敏感信息:資源的 URI 不應包含任何受保護的數據(例如用戶名、密碼或身份驗證令牌)。
結論
恭喜! 幾個基本到復雜的 REST API 面試問題及其各自的解決方案現在觸手可及。
現在您已經對如何回答一些典型的 REST API 面試問題有了一個很好的概念,您可以繼續回答面試。 下一步取決於您的目標。
請瀏覽 採訪系列 與 Hashdork 一起準備面試。
發表評論