"error": {
"message": "You did not provide an API key. You need to provide your API key in the Authorization header, using Bearer auth (e.g. 'Authorization: Bearer YOUR_SECRET_KEY'). See https://stripe.com/docs/api#authentication for details, or we can help at https://support.stripe.com/.",
"type": "invalid_request_error"
}
}

看看這比簡(jiǎn)單的 4xx 或 5xx 代碼有用多少,您只能猜測(cè)哪里出了問(wèn)題? Stripe API 的錯(cuò)誤消息不僅告訴您出了什么問(wèn)題,而且還告訴您如何修復(fù)它。

2. Merge API

Merge API是一種用于通過(guò)單一來(lái)源整合許多不同 API 的 API。他們有額外的動(dòng)力來(lái)提供高質(zhì)量的錯(cuò)誤消息。合并 API 從多個(gè)來(lái)源接收API 錯(cuò)誤,然后需要以一致且可理解的方式返回這些錯(cuò)誤。

例如,當(dāng)您查詢 Merge API 查找不存在的資源時(shí),您會(huì)收到以下響應(yīng):

{
"status": 400,
"error": "Not Found",
"message": "The requested resource was not found on this server.",
"path": "/api/users/5678",
"timestamp": "2024-10-20T12:34:56Z"
}

通過(guò)包含路徑,用戶可以仔細(xì)檢查以確保他們正在查詢正確的端點(diǎn)。返回時(shí)間戳使得 API 錯(cuò)誤消息也有助于調(diào)試和日志記錄,從而允許用戶檢查特定資源在特定時(shí)間是否不可用。

3.Instagram API

Instagram 每月?lián)碛谐^(guò) 20 億活躍用戶。他們更有理由擁有任何人都可以輕松理解的深入、有用的 API 錯(cuò)誤消息。當(dāng)用戶對(duì)太大而無(wú)法下載的圖像發(fā)出 API 請(qǐng)求時(shí),他們會(huì)看到以下響應(yīng):

{
"error":
{
"message": "The image size is too large.",
"type": "OAuthException",
"code": 36000,
"error_subcode": 2207004,
"is_transient": false,
"error_user_title": "Image size too large",
"error_user_msg": "The image is too large to download. It should be less than 8 MiB.",
"fbtrace_id": "A6LJylpZRKw2xKLFsAP-cJh"
}
}

這在某種程度上違背了我們關(guān)于不需要說(shuō)明手冊(cè)來(lái)理解 API 錯(cuò)誤消息的評(píng)論,但它仍然是自我描述的。該消息詳細(xì)說(shuō)明了問(wèn)題所在。錯(cuò)誤代碼和子代碼提供了有關(guān)問(wèn)題以及如何修復(fù)它的更多詳細(xì)信息。這種方法對(duì)于執(zhí)行許多不同操作的 API 很有幫助,因?yàn)樽哟a可用于識(shí)別未按應(yīng)有方式運(yùn)行的特定函數(shù)。

4. Salesforce API

Salesforce API是目前 Postman 上最受歡迎的集合,說(shuō)明了這個(gè)強(qiáng)大的銷售和營(yíng)銷平臺(tái)有多么受歡迎。由于有如此多的用戶通過(guò) API 執(zhí)行如此多的財(cái)務(wù)敏感業(yè)務(wù),因此需要詳細(xì)、有用的 API 錯(cuò)誤消息。

Salesforce API 并不令人失望,有 14 條獨(dú)特的 4xx 錯(cuò)誤消息和 3 條 5xx 消息。是的,他們的許多錯(cuò)誤消息都非常簡(jiǎn)單,但是無(wú)論如何,有這么多不同的錯(cuò)誤消息可以讓用戶確切地知道出了什么問(wèn)題。例如,在登錄時(shí)提供錯(cuò)誤的憑據(jù)會(huì)返回一個(gè)簡(jiǎn)單的401錯(cuò)誤:

{"error_description": "Client authentication failed", "error": "invalid_client"}

忽略正確格式化查詢可能會(huì)返回428錯(cuò)誤,而是:

{"error_description": "The request wasn't executed because it wasn't conditional. Add one of the Conditional Request Headers, such as If-Match, to the request and resubmit it.", "error": "PRECONDITION_REQUIRED"}

5.Reltio API

我們將用另一個(gè)連接器 API 來(lái)完成我們的列表,因?yàn)樗鼈兙哂腥绱藦V泛的功能并且需要如此具體。 Reltio API是一套用于將數(shù)據(jù)集成到一個(gè)平臺(tái)的工具,很像 Merge API。不過(guò),Reltio 更深入,讓您可以通過(guò)一系列 API 執(zhí)行 CRUD。

Integrate API 是最令人印象深刻的,因?yàn)樗槍?duì)各種最流行的 API、工具和資源的專用功能。每個(gè)連接器都有自己的錯(cuò)誤代碼,正如您在 Salesforce 集成中看到的那樣:

Error 1020: Invalid request, tenant {tenantId} is forbidden for current user

當(dāng)你在Reltio API文檔中查看這個(gè)錯(cuò)誤時(shí),它也給了你一個(gè)解決方案。這打破了自我描述的規(guī)則,但它可以通過(guò)它所使用的廣泛工具來(lái)彌補(bǔ)。

關(guān)于重要 API 錯(cuò)誤消息的最后一句話

API 不僅限于返回簡(jiǎn)單的503錯(cuò)誤。由于能夠提供 JSON 或 XML 等資源,因此可以返回有關(guān) API 運(yùn)行情況的詳細(xì)文檔。正如 Fielding 所設(shè)想的那樣,API 錯(cuò)誤消息首先是 API 潛力的最佳體現(xiàn)之一,使用戶無(wú)需查閱 API 文檔。 API 錯(cuò)誤消息是提升開(kāi)發(fā)人員體驗(yàn)和最終客戶體驗(yàn)的最快、最簡(jiǎn)單且成本最低的方法之一。

當(dāng)然,平衡效率和安全性很重要。 API 錯(cuò)誤消息暴露了太多信息。對(duì)于 API 開(kāi)發(fā)人員來(lái)說(shuō),在編寫(xiě) API 錯(cuò)誤消息時(shí)牢記API 安全最佳實(shí)踐非常重要,因?yàn)槊舾行畔⒖赡軙?huì)導(dǎo)致未經(jīng)授權(quán)的用戶獲得網(wǎng)絡(luò)訪問(wèn)權(quán)限。信息和安全性之間的正確平衡可以為參與 API 的每個(gè)人提供更好的體驗(yàn)。

原文鏈接:https://nordicapis.com/5-real-world-examples-of-great-api-error-messages/

上一篇:

如何實(shí)現(xiàn)基于屬性的API訪問(wèn)控制

下一篇:

使用JSON注入攻擊API
#你可能也喜歡這些API文章!

我們有何不同?

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

多API并行試用

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

查看全部API→
??

熱門(mén)場(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)