亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

設(shè)計RESTful API的5個最佳實(shí)踐

 

RESTful%20API無處不在,比任何其他API體系結(jié)構(gòu)都為現(xiàn)代世界提供了更多支持。%20根據(jù)ProgrammableWeb的研究,REST占API的80%。%20這些API的構(gòu)建和結(jié)構(gòu)方式可以在當(dāng)今競爭異常激烈的世界中成敗一家公司。%20設(shè)計不良的API可能難以使用,在最需要它們時可能會失敗,并且是尋找敏感數(shù)據(jù)的黑客的重要目標(biāo)。%20另一方面,利用最佳實(shí)踐精心設(shè)計的API使開發(fā)變得輕而易舉,吸引了新客戶,并在用戶之間建立了信心,從而可以提高保留率。

什么是RESTful%20API?

REST是REpresentational%20State%20Transfer的首字母縮寫,描述了用于創(chuàng)建分布式Web服務(wù)的體系結(jié)構(gòu)樣式。%20REST允許用戶使用標(biāo)準(zhǔn)的HTTP請求來遠(yuǎn)程調(diào)用代碼并接收響應(yīng)。%20REST與其他協(xié)議相比有幾個優(yōu)點(diǎn):

·%20它將數(shù)據(jù)存儲問題與用戶界面分開,這意味著運(yùn)行API的后端服務(wù)器可以處理所有邏輯以訪問數(shù)據(jù)庫并處理數(shù)據(jù),然后再以統(tǒng)一的結(jié)構(gòu)化方式將其返回給用戶。%20這種一致的數(shù)據(jù)訪問和結(jié)構(gòu)使開發(fā)人員可以輕松構(gòu)建前端應(yīng)用程序,從而輕松地將您的應(yīng)用程序前端移植到其他平臺。

·%20REST%20API支持緩存常用的靜態(tài)資源,以提高性能。

·%20REST是無狀態(tài)的,因此完成請求的所有信息都包含在請求中。%20通過消除對服務(wù)器端狀態(tài)同步邏輯的需求,這簡化了API。%20這也使擴(kuò)展變得更容易,因?yàn)槿魏畏?wù)器都可以處理任何請求而無需跟蹤會話。

(如果構(gòu)建RESTful%20API對您來說是新手,或者您希望沙盒嘗試這些最佳實(shí)踐,請從Heroku中嘗試該參考體系結(jié)構(gòu),該體系結(jié)構(gòu)易于部署。)

因此,現(xiàn)在,這是構(gòu)建RESTful%20API的五種最佳實(shí)踐。

1.使用錯誤狀態(tài)代碼

HTTP已經(jīng)內(nèi)置了100多個狀態(tài)代碼。使用RESTful%20API中的狀態(tài)代碼來傳達(dá)一般錯誤對于開發(fā)人員來說是天賜的禮物。%20開發(fā)人員將能夠立即發(fā)現(xiàn)問題,這意味著花費(fèi)更少的時間編寫解析器來處理所有不同類型的錯誤。%20是否因?yàn)闀捨吹卿浂芙^了請求?%20有一個狀態(tài)碼。%20是否缺少資源?%20CRUD服務(wù)是否收到請求但無法連接到數(shù)據(jù)庫?%20這些都有狀態(tài)碼,幾乎還有其他常見行為。%20狀態(tài)代碼也可以與特定的錯誤消息結(jié)合使用,以提供有關(guān)失敗請求的詳細(xì)信息。

以下是Node.js%20API的一小段代碼,用于說明:

 

該端點(diǎn)通過傳入的用戶ID返回用戶配置文件。 響應(yīng)請求而發(fā)送的狀態(tài)代碼可準(zhǔn)確告知開發(fā)人員發(fā)生了什么錯誤,從而使響應(yīng)更易于處理,并為他們節(jié)省了大量時間和麻煩。 開發(fā)人員可以根據(jù)狀態(tài)代碼實(shí)現(xiàn)用于處理不同錯誤的例程,而API提供詳細(xì)的錯誤信息。 在這種情況下,404錯誤會告訴呼叫者找不到東西。 響應(yīng)中的JSON會特別告訴調(diào)用者它是找不到的用戶ID,而不是錯誤是指向端點(diǎn)還是請求的資源,這是模棱兩可的。

2.好的文檔

文檔是API最重要(也是最被忽略)的方面之一。 正式文檔可以是客戶與產(chǎn)品的第一聯(lián)系點(diǎn),并且是開發(fā)團(tuán)隊是否采用該產(chǎn)品的關(guān)鍵因素。 好的文檔看起來干凈,一致,并為開發(fā)人員做好充分準(zhǔn)備,使其可以快速使用您的API。 有人學(xué)習(xí)您的API的速度越快,他們開始使用它的速度就越快。 文檔應(yīng)該具有統(tǒng)一的外觀,并包括所有相關(guān)信息:端點(diǎn),兼容方法(GET,POST,PUT等),哪些參數(shù)是可選的和必需的以及預(yù)期的數(shù)據(jù)類型。

這個來自Heroku平臺API文檔的屏幕截圖展示了開發(fā)人員所需的完整文檔。 它顯示了已執(zhí)行的操作,訪問的端點(diǎn)以及使用的HTTP方法。 它還提供了有關(guān)可選參數(shù)的詳細(xì)信息,并向用戶顯示了正確實(shí)施的所有示例的工作示例。 樣本響應(yīng)還說明了如何構(gòu)造返回的數(shù)據(jù)。

設(shè)計RESTful API的5個最佳實(shí)踐

 

Heroku的API文檔干凈,井井有條,可為開發(fā)人員提供所需的一切。

3.速率限制和節(jié)流

API請求可能會占用大量資源,需要大量的計算能力和存儲空間。如果您不小心,大量連續(xù)的并發(fā)請求可能會減慢服務(wù)器速度甚至使您的DOS慢下來,一種簡單的方法是使用許多可用工具之一,例如express-rate-limit(一種設(shè)計為Express的中間件)專門用于以簡單,直觀的方式處理限速。您還可以實(shí)現(xiàn)與身份驗(yàn)證綁定的速率限制邏輯,從而在控制授予每個用戶的權(quán)限方面具有更大的靈活性。通過要求用戶進(jìn)行身份驗(yàn)證,可以跟蹤每個用戶發(fā)送的請求數(shù)量,這也使您可以限制或停止這些請求。還可以授予不同的用戶訪問不同的API端點(diǎn)的權(quán)限。例如,與普通非特權(quán)用戶相比,管理員用戶可以通過API訪問更多信息或更多請求。使用身份驗(yàn)證的另一個好處是它提供的安全性,使我們進(jìn)入了下一個最佳實(shí)踐。

4.保護(hù)API

API必須安全!%20黑客使用自動腳本隨意攻擊服務(wù),因此API需要采取主動安全措施,以保持操作順暢運(yùn)行并保護(hù)敏感數(shù)據(jù)。%20首先,每個Web應(yīng)用程序都應(yīng)具有HTTP嚴(yán)格傳輸安全性(HSTS)策略,以確保所有連接均被加密。%20確保連接的安全性可以防止網(wǎng)絡(luò)嗅探,中間人攻擊,協(xié)議降級攻擊以及通過cookie盜竊進(jìn)行會話劫持。%20您可能還希望設(shè)置和隱藏某些可以利用的標(biāo)頭,例如那些揭示有關(guān)您的API基礎(chǔ)結(jié)構(gòu)的信息的標(biāo)頭,這些信息可能對攻擊者有用。%20有很多工具可以解決這個問題。%20例如,如果您使用Node.js運(yùn)行API,則可以使用Helmet.js之類的東西。%20實(shí)現(xiàn)此中間件很容易:

 

為防止API泄漏敏感的客戶數(shù)據(jù)(例如密碼),請編寫單元測試以進(jìn)行安全性測試。 最后但并非最不重要的一點(diǎn)是,您應(yīng)該要求身份驗(yàn)證令牌才能訪問您的API。 這使開發(fā)人員可以控制誰有權(quán)訪問哪些信息。 通過拒絕冒犯用戶,它還可以使阻止API服務(wù)器上的攻擊變得更加容易。

5.使用JSON

API的目的是從公司資源中提供數(shù)據(jù)。 根據(jù)北歐API,通常使用三種格式來返回數(shù)據(jù):XML,YAML和JSON。

XML易于人類閱讀,但是數(shù)據(jù)包含在一組標(biāo)記標(biāo)簽中,這些標(biāo)記迅速增長并且需要額外的帶寬。 開發(fā)人員還必須解析標(biāo)簽的內(nèi)容才能訪問數(shù)據(jù)。相比之下,YAML僅占用很少的帶寬,但需要使用外部庫或自定義的解析器和編碼器來處理數(shù)據(jù).JSON與XML完美地融合在一起 和YAML一起使用:它是人類可讀的,不需要高帶寬或自定義解析即可將數(shù)據(jù)移入JAVAScript兼容結(jié)構(gòu)。

結(jié)論

使用RESTful API實(shí)現(xiàn)這五種做法將使您的API更加易于使用和安全。 具有良好文檔的安全,可靠的API可以提供出色的開發(fā)人員體驗(yàn),并且更高的易用性將幫助您提高采用率。 此外,這些最佳實(shí)踐將使您的代碼保持整潔,操作平穩(wěn)進(jìn)行,并使客戶滿意。

(本文翻譯自Michael Bogan的文章《5 Best Practices for Designing RESTful APIs》,參考:
https://medium.com/swlh/5-best-practices-for-designing-restful-apis-42f55cb787d3)

分享到:
標(biāo)簽:RESTful API
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定