
休息是代表性國家轉移的首字母縮寫詞。 Restful API是使用HTTP請求訪問和更改數據的應用程序程序接口(API)的架構樣式。該數據可用於獲取,放置,發布和刪除數據類型,該數據指的是讀,更新,創建和刪除有關資源的操作。有關更多詳細信息
任何基於REST的體系結構中使用的主要功能是:
您的申請必須滿足某些限製或原則。讓我們詳細介紹這些原則。
有六個基本原則,以下是六個指導原則:
無狀態:從客戶端發送到服務器的請求包含完全理解它所需的所有必要信息。它可以是URI,查詢弦參數,車身甚至標題的一部分。 URI用於唯一識別資源,並且身體持有請求資源的狀態。服務器完成處理後,通過標題,狀態或響應主體將適當的響應發送回客戶端。
客戶端服務器:它具有統一的接口,可將客戶端與服務器分開。將問題分開有助於改善用戶界面在多個平台上的可移植性,並增強服務器組件的可擴展性。
統一界面:為了在整個應用程序中獲得均勻性,REST定義了四個接口約束,這是:
Resource identification
Resource Manipulation using representations
Self-descriptive messages
Hypermedia as the engine of application state
可緩存:為了提供更好的性能,通常可以使應用程序可緩存。它是通過將服務器的響應標記為可隱式或明確的可緩存或不可接受的。如果響應定義為可緩存,則客戶端緩存將來可以重用響應數據以進行等效響應。它還有助於防止重複使用過時的數據。
分層系統:分層系統體系結構允許通過限制組件行為來更穩定應用程序。該體系結構可實現負載平衡,並提供共享的緩存以促進可擴展性。分層體系結構還有助於增強應用程序的安全性,因為每一層中的組件都無法超越其所處的下一層。
按需代碼:按需代碼是可選的約束,最少使用。它允許客戶代碼或小程序通過應用程序中使用的接口下載和擴展。從本質上講,它通過創建不依賴其自己的代碼結構的智能應用程序來簡化客戶端。
現在,您知道了什麼是REST API,以及為了提供有效的應用程序所需的一切,讓我們更深入地研究,並使用所有趨勢技術和FrameOwrks查看構建REST API的過程。
休息和簡單的對象訪問協議(SOAP)提供不同的方法來調用Web服務。 REST是一種體系結構樣式,而SOAP定義了基於XML的消息交換的標准通信協議規範。 REST應用程序可以使用肥皂。
寧靜的Web服務無狀態。與SOAP相比,基於REST的實現很簡單,但是用戶必須了解所傳遞的上下文和內容,因為沒有標準的規則來描述其餘的Web服務接口。 REST服務可用於限制的配置文件設備,例如移動設備,並且易於與現有網站集成。
肥皂需要更少的水暖代碼,意味著與REST服務設計相比,將主要代碼模塊連接在一起的低級基礎結構代碼。 Web服務描述語言描述了一組常見的規則,以定義服務的消息,綁定,操作和位置。 SOAP Web服務對於異步處理和調用很有用。
這些是開發REST API時必須考慮的一些觀點:
極大的有效載荷響應數據將減慢請求完成,其他服務呼叫以及影響降級性能。如您所知,既然我們正在向客戶返回所有訂單,而不是僅僅為他們的當前訂單,我們將不得不處理某些績效降級。
我們可以使用GZip Compression來減少有效載荷尺寸。這減少了我們在Web應用程序(客戶端)上響應的下載大小,並增加了上傳速度或創建某些實體(訂單)。我們可以在Web API上使用Deflate compression 。或者,我們可以將Accept-OdingRequest標題更新為GZIP 。
緩存是提高API性能的最簡單方法之一。如果我們的請求經常回饋相同的響應,那麼該響應的緩存版本有助於避免其他服務呼叫/數據庫查詢。您將希望確保在使用緩存以定期無效緩存中的數據無效,尤其是在發生新的數據更新時。
假設我們的客戶希望下達自動零件的訂單,我們的應用程序呼籲某些自動零件API以獲取零件價格。由於響應(零件價格)每週僅更改一次(@ 1:00 AM),因此我們可以在剩餘時間內緩存響應。這使我們免於每次返回相同的零件價格。類似情況您可以使用緩存避免額外的呼叫或請求。
慢速網絡將降低即使是最堅固設計的API的性能。不可靠的網絡可能會導致停機時間,這可能會導致您的組織違反SLA,服務條款,並承諾您可能對客戶做出的承諾。重要的是要投資適當的網絡基礎架構,以便我們可以保持所需的性能水平。這可以通過利用和購買足夠的雲資源和基礎架構來實現(example: in AWS, allocate the proper # of EC2 instances, use a Network Load Balancer) 。另外,如果您有大量的背景過程,請在單獨的線程上運行這些過程,以避免阻止請求。您還可以使用鏡子和內容交付網絡(CDN)(例如CloudFront)來更快地在全球各地提供請求。
您可能會有一種情況,即您的API會遭受DDOS攻擊,該攻擊可能是惡意的和故意的,或者當工程師打電話給API從某些本地應用程序中執行API時,您可能會遭受惡意和故意。您可以通過測量交易,並monitoring the number of how many transactions occur per IP Address, or per SSO/JWT Token (if the customer/calling app is authorized before calling the API) ,則可以避免這種情況。
這種限制限制的方法有助於減少過度的請求,從而減慢API的速度,有助於處理意外通話/執行,並主動監視和確定可能的惡意活動。
在提起和補丁操作的工程師中,這是一個常見的誤解。它們在更新資源時相似,但他們每個人都以不同的方式執行更新。將操作通過向整個資源發送更新來更新資源。補丁操作將部分更新應用於需要更新的資源。產生的撥打電話會產生較小的有效載荷,並在大規模上提高性能。
Pro-Tip: Even though PATCH calls can limit the request size, you should note that it is not Idempotent.
Meaning, it is possible that a PATCHcan yield different results with a series of multiple calls.
So, you should carefully and deliberately consider your application for using PATCH requests,
and make sure that they are idempotently implemented if needed. If not, use PUT requests.
這也許是您將在此處閱讀的最重要的技巧之一。如果您應該從此倉庫中學到一件事,那應該是這個!這是沒有談判的。
對日誌,監視和提醒工程師在出現問題之前就可以幫助工程師診斷和補救問題。許多API(基於Express/Node的Java,GO)具有預定義的終點,用於評估以下內容:
`/health`
`/metrics`
如果您沒有啟用日誌記錄,並且存在一個潛在的問題,則您將無法跟踪原點或在特定請求中發生問題的地方。
如果您沒有啟用監視,則從分析的角度來看,您將不會知道某些問題或錯誤的發生頻率。然後,這將阻止您考慮可能的解決方案。
而且…如果您沒有啟用警報,您將不知道是否存在問題,直到客戶(或更糟的是客戶)報告它。
分頁有助於從多個響應中創建內容桶。這種優化有助於改善響應,同時保留傳輸/顯示給客戶的數據。您可以通過僅針對客戶要求的響應/結果提供響應/結果來標準化,細分和限制有助於減少結果復雜性的響應,並改善總體客戶體驗。
我們知道API是驚人的,如果適當優化和增強了性能,可以為業務和客戶提供豐富的體驗而非常有力。業務需求和客戶期望總是會隨著時間的流逝而發展。作為負責任的工程師,我們決定如何以表現方式構建我們的API,這可以幫助我們實現並超越目標。
這些技巧只是冰山一角,並在一般環境中應用於所有API。根據您的特定API和用例,它與之互動的服務,被調用的位置等。您可能必須以不同的方式實現這些技巧。
與Laravel一起休息API-護照
與php的REST API - 糟糕
與Python的休息API-燒瓶
帶Python的REST API -DJANGO -RESTFRAMEWORK
與GO -MUX進行休息API
與Go一起休息API - 杜松子酒
帶有nodejs的REST API - Express-基本
帶有nodejs的REST API -Express- JWT-續集 - 前進
在幾分鐘內非常容易創建REST API,您可以根據您的語言和框架首選項選擇上述任何代碼庫,並遵循說明創建REST API。
愉快的編碼?
LinkedIn:https://www.linkedin.com/in/the-startup-cto/
媒介:https://apige.medium.com/
Twitter:https://twitter.com/htngapi