首先,我們要明確 “API 限制 “的含義。

API 提供商是提供應(yīng)用程序接口 (API) 訪問權(quán)限的組織。API 是一套用于構(gòu)建軟件應(yīng)用程序的例程、協(xié)議和工具。

您的應(yīng)用程序會向 API 提供商的服務(wù)器提交請求,詢問有關(guān)如何與屬于同一生態(tài)系統(tǒng)的其他服務(wù)進行交互的信息或說明。

為確保服務(wù)正常運行,提供商會對每分鐘或每小時可發(fā)出的請求數(shù)量進行限制。這樣,他們就可以管理負載,為每個請求提供最佳服務(wù)。

API 速率限制是指應(yīng)用程序在指定時間內(nèi)可進行的 API 調(diào)用或請求次數(shù)。除了并發(fā) API 調(diào)用外,積極的輪詢和快速的配置更新也會導(dǎo)致應(yīng)用程序受到速率限制。

什么是 API 請求?

API 請求是您從 API 請求數(shù)據(jù)時遵循的方法。您可以使用請求來發(fā)送您希望 API 處理的信息。

例如,您可以使用 API 請求從服務(wù)器或應(yīng)用程序請求您的個人資料或用戶信息。您還可以使用它來發(fā)送您希望 API 處理的數(shù)據(jù)。

API 請求有兩種類型:GET 和 POST。

另請閱讀:HTTP POST 與 GET:在 REST API 中使用是否更安全?

API 可以接收或發(fā)送信息。當(dāng) API 從服務(wù)器或應(yīng)用程序請求數(shù)據(jù)時,它會收到響應(yīng)。 API 端點是 API 連接到 Web 服務(wù)的點。它允許 API 訪問由 HTTP 查詢字符串表示的服務(wù)器上的數(shù)據(jù)。當(dāng)您將 API 端點添加到 URL 并調(diào)用服務(wù)器時,會發(fā)生該請求。

這是Ipstack API的簡單 API 請求示例。

https://api.ipstack.com/134.201.250.155
? access_key = YOUR_ACCESS_KEY

API響應(yīng):

{
"ip": "134.201.250.155",
"type": "ipv4",
"continent_code": "NA",
"continent_name": "North America",
"country_code": "US",
"country_name": "United States",
"region_code": "CA",
"region_name": "California",
"city": "Los Angeles",
"zip": "90013",
"latitude": 34.0453,
"longitude": -118.2413,
"location": {
"geoname_id": 5368361,
"capital": "Washington D.C.",
"languages": [
{
"code": "en",
"name": "English",
"native": "English"
}
],
"country_flag": "https://assets.ipstack.com/images/assets/flags_svg/us.svg",
"country_flag_emoji": "????",
"country_flag_emoji_unicode": "U+1F1FA U+1F1F8",
"calling_code": "1",
"is_eu": false
},
"time_zone": {
"id": "America/Los_Angeles",
"current_time": "2018-03-29T07:35:08-07:00",
"gmt_offset": -25200,
"code": "PDT",
"is_daylight_saving": true
},
"currency": {
"code": "USD",
"name": "US Dollar",
"plural": "US dollars",
"symbol": "$",
"symbol_native": "$"
},
"connection": {
"asn": 25876,
"isp": "Los Angeles Department of Water & Power"
}
}

對于每個請求,您都會收到帶有 HTTP 狀態(tài)的響應(yīng)。這將告訴您該操作是否成功。發(fā)出的不成功請求,無論是超出速率限制還是短時間內(nèi)發(fā)出過多請求,都會收到帶有狀態(tài)代碼的響應(yīng)。

錯誤示例:如果 Ipstack API 中的每月 API 請求量已超出,則會返回以下錯誤。

{
"success": false,
"error": {
"code": 104,
"type": "monthly_limit_reached",
"info": "Your monthly API request volume has been reached. Please upgrade your plan."
}
}

如何接受或拒絕 API 請求?

所有 API 端點都經(jīng)過身份驗證。身份驗證確定最終用戶是誰并計算用戶發(fā)出的請求數(shù)量。

授權(quán)令牌或密鑰是身份驗證機制中最終用戶的識別憑證。使用電子郵件進行基本身份驗證還可以確定最終用戶是誰。

應(yīng)用程序權(quán)限使用識別憑據(jù)來確定是否應(yīng)接受或拒絕請求。

身份驗證令牌或密鑰將最終用戶標識為應(yīng)用程序的所有者。即JSON Web 令牌 (JWT)或不透明字符串令牌。生成的每個 API 令牌都是單獨計算的,即使應(yīng)用程序的最終用戶多次生成也是如此。如果 API 速率耗盡,新的 API 請求將失敗。

另請閱讀:什么是 API 密鑰? API 密鑰定義和含義

為什么 API 提供商要使用限制?

每個 API 提供商都限制其服務(wù)的某些部分。限制是為了保護您,但也可能令人沮喪。了解這些限制背后的原因?qū)椭苊馊魏我馔狻?/p>

1.?防濫用保護

API 提供商使用限制的主要原因之一是為了公平對待使用其服務(wù)的每個人。他們必須小心分配多少帶寬,就像任何其他公司必須小心為服務(wù)器上托管的網(wǎng)站分配多少帶寬一樣。

2.?降低成本

限制還有助于保護提供商免受因客戶在無意中使用過多資源而產(chǎn)生的意外高額賬單的影響。一些公司因使用超出預(yù)期的帶寬而產(chǎn)生巨額賬單,然后當(dāng)提供商試圖切斷它們時拒絕償還。通過施加限制,他們有望完全避免這種情況。

3.?密鑰

一些 API 使用密鑰來識別其服務(wù)的用戶。如果密鑰受到限制,則可以確保沒有重復(fù)的密鑰,并且只有一個用戶可以訪問您的服務(wù)。此類密鑰的一個示例是跟蹤用戶在網(wǎng)站內(nèi)的活動的會話 cookie。

如果 API 調(diào)用用完,您的應(yīng)用程序或網(wǎng)站會發(fā)生什么情況?

當(dāng)您用完典型應(yīng)用程序上的 API 調(diào)用時,您的應(yīng)用程序?qū)⑼V构ぷ鳌H魏卧诰W(wǎng)絡(luò)上運行的應(yīng)用程序都會發(fā)生這種情況。以下是您會注意到的常見事項:

1.?狀態(tài)/錯誤代碼

達到 API 限制時發(fā)生的第一件事是,您的軟件會從 API 提供商處獲得狀態(tài)/錯誤代碼。

2.?暫停API服務(wù)

接下來,API 服務(wù)將停止為您的應(yīng)用程序/網(wǎng)站提供 API 函數(shù)和數(shù)據(jù)。當(dāng)您登錄 API 提供商用戶儀表板時,您可能會注意到有一條消息指出:

您已超出每月請求限額。

您當(dāng)前的訂閱計劃在此期間不允許任何進一步的 API 請求。為了最大限度地減少服務(wù)中斷,您可能需要考慮升級您的訂閱計劃。

控制面板 – 儀表板的屏幕截圖,來自https://aviationstack.com/dashboard

您可能會在用戶儀表板的“API 使用情況”頁面上再次看到相同的消息。

截圖取自https://aviationstack.com/usage

克服 API 速率限制的 3 個步驟

耗盡 API 調(diào)用可能會給您的應(yīng)用程序或網(wǎng)站帶來嚴重問題。它甚至可能導(dǎo)致它無限期地離線。如果您在 API 調(diào)用上運行精簡,您可能需要考慮以下方法來防止這種情況發(fā)生。

一旦您的使用量超過 API 調(diào)用次數(shù),有兩種選擇:

1.?獲取您的API速率限制狀態(tài)

如果您使用付費計劃,那么您可能已經(jīng)熟悉 API 速率限制狀態(tài)。但是,如果您使用免費帳戶,那么您可能是第一次遇到 API 速率限制。

許多服務(wù)的 API 會返回包含當(dāng)前速率限制狀態(tài)的 HTTP 標頭。如果您要發(fā)出大量請求,則應(yīng)該在每個請求上檢查此標頭,以確保不會超出速率限制。

此外,您可以通過以下方式找到 API 速率限制狀態(tài):轉(zhuǎn)到開發(fā)人員控制臺,單擊 API 訪問,然后查看速率限制部分。

在這里,您將看到每日配額以及今天迄今為止已發(fā)出的請求數(shù)。

2.?購買更多API調(diào)用

現(xiàn)在您知道如何檢查 API 限制,但如果您已經(jīng)達到這些限制怎么辦?下一步是從服務(wù)提供商處購買更多 API 調(diào)用。不同計劃的成本各不相同,并且取決于多種因素。不過,您可以隨時查看服務(wù)提供商的官方網(wǎng)站,了解有關(guān)您可以購買的數(shù)量和費用的更多信息。

3.?將您的應(yīng)用程序納入企業(yè)計劃

如果您想構(gòu)建可擴展的應(yīng)用程序,則需要從一開始就考慮到增長。未能規(guī)劃 API 使用可能會導(dǎo)致您達到速率限制。

為了防止出現(xiàn)此問題,讓您的應(yīng)用程序獲得更高級別的企業(yè)計劃至關(guān)重要。企業(yè)計劃是您預(yù)先支付更高容量費用的地方。這種方法的優(yōu)點是,您的應(yīng)用程序不會用完請求令牌并被關(guān)閉,因為您已經(jīng)支付了足夠的容量費用。

如果您的應(yīng)用程序包含在企業(yè)計劃中,您可以預(yù)先購買額外的容量。該程序允許您擁有更高的配額,因此您不必擔(dān)心其他應(yīng)用程序或大量下載會達到配額限制。如果它不在企業(yè)程序中,您可以將其從免費程序切換到企業(yè)程序。

最后的想法

當(dāng)您達到 API 速率限制時,應(yīng)用程序?qū)⑼V拐9ぷ鳌K麄円赐V癸@示數(shù)據(jù),要么開始要求付費才能訪問您真正需要的信息。為了幫助您避免這種情況,請嘗試跟蹤您的應(yīng)用程序使用每個 API 的次數(shù),這樣就不會意外發(fā)生。

更好的是,您應(yīng)該主動訂閱一個計劃,該計劃將為您的應(yīng)用程序提供足夠的 API 請求限制,這樣您就不會在時機成熟時手忙腳亂地修復(fù)它。

原文鏈接:What Happens When You Hit Your Monthly API Rate Limit?

上一篇:

API 市場帶來了醫(yī)療保健行業(yè)的巨大轉(zhuǎn)變

下一篇:

提升辦公效率:如何巧妙應(yīng)用OCR技術(shù)
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊

多API并行試用

數(shù)據(jù)驅(qū)動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費