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

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

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

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

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

什么是 API 請(qǐng)求?

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

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

API 請(qǐng)求有兩種類型:GET 和 POST。

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

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

這是Ipstack API的簡(jiǎn)單 API 請(qǐng)求示例。

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"
}
}

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

錯(cuò)誤示例:如果 Ipstack API 中的每月 API 請(qǐng)求量已超出,則會(huì)返回以下錯(cuò)誤。

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

如何接受或拒絕 API 請(qǐng)求?

所有 API 端點(diǎn)都經(jīng)過(guò)身份驗(yàn)證。身份驗(yàn)證確定最終用戶是誰(shuí)并計(jì)算用戶發(fā)出的請(qǐng)求數(shù)量。

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

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

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

另請(qǐng)閱讀:什么是 API 密鑰? API 密鑰定義和含義

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

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

1.?防濫用保護(hù)

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

2.?降低成本

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

3.?密鑰

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

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

當(dāng)您用完典型應(yīng)用程序上的 API 調(diào)用時(shí),您的應(yīng)用程序?qū)⑼V构ぷ?。任何在網(wǎng)絡(luò)上運(yùn)行的應(yīng)用程序都會(huì)發(fā)生這種情況。以下是您會(huì)注意到的常見(jiàn)事項(xiàng):

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

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

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

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

您已超出每月請(qǐng)求限額。

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

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

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

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

克服 API 速率限制的 3 個(gè)步驟

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

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

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

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

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

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

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

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

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

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

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

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

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

最后的想法

當(dāng)您達(dá)到 API 速率限制時(shí),應(yīng)用程序?qū)⑼V拐9ぷ?。他們要么停止顯示數(shù)據(jù),要么開(kāi)始要求付費(fèi)才能訪問(wèn)您真正需要的信息。為了幫助您避免這種情況,請(qǐng)嘗試跟蹤您的應(yīng)用程序使用每個(gè) API 的次數(shù),這樣就不會(huì)意外發(fā)生。

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

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

上一篇:

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

下一篇:

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

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

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

查看全部API→
??

熱門場(chǎng)景實(shí)測(cè),選對(duì)API

#AI文本生成大模型API

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

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)