日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

十个书写Node.js REST API的最佳实践(上)

發布時間:2024/4/17 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 十个书写Node.js REST API的最佳实践(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

收錄待用,修改轉載已取得騰訊云授權


原文:10 Best Practices for Writing Node.js REST APIs

我們會通過本文介紹下書寫Node.js REST API的最佳實踐,包括各個主題,像是命名路由、認證、黑盒測試以及對相關資源使用合適的緩存頭。

對于Node.js來說最流行的一個用例就是用其來書寫RESTful API。盡管如此,當我們使用監控工具來幫助用戶排查問題時,我們總是能感受到在REST API上開發者們有很多的問題。

我希望這些最佳實踐能夠對你有所幫助。

1. 使用HTTP方法和API路由

設想一下你正在構建Node.js RESTful API用以用來創建、更新、獲取或者刪除用戶。這些操作HTTP已經有可以勝任的工具集:POST,PUT, GET, PATCH 或 DELETE。

作為最佳實踐,你的API路由應該一直使用名詞作為資源id。涉及到用的資源相關的,路由機制也可以這樣:

  • POST /user 或者 PUT /user:/id 來創建新用戶

  • GET /user 來獲取列表的用戶

  • GET /user/:id 來獲得某一個用戶

  • PATCH /user/:id 來修改已有的用戶記錄

  • DELETE /user/:id 來刪除一個用戶

2. 正確地使用HTTP狀態碼

如果處理請求時出了問題,你必須在響應里設置正確的狀態碼:

  • 2xx,如果一切都ok

  • 3xx,如果資源被移除

  • 4xx,如果因為服務器錯誤導致請求無法實現 (例如請求一個不存在的資源)

  • 5xx, 如果API測出現問題 (例如異常發生)

如果你正在使用Express,設置狀態碼就是這么簡單 res.status(500).send({error: 'Internal server error happened'})。 和使用Restify很類似:res.status(201).

查看list of HTTP status codes以尋求完整列表

3.使用HTTP頭來設置Medata

使用HTTP頭把metadata加到要發送的負載上。像這樣的頭可以是在如下信息的上:

  • 頁碼

  • 速率限制

  • 或者是認證.

標準化HTTP頭的列表可以在 這里 被找到。

如果你需要在你的相應頭里面設置任何自定義的metadata,給它們加上X前綴是最佳實踐。例如,之前如果你在使用CSRF token時,把其命名為X-Csrf-Token是很普遍(但不標準)的做法。無論如何隨著RFC 6648的發布,這些都已經被廢棄了。新API最好不要使用會和其他應用發生沖突的header名。例如,OpenStack在它們的header前加上了OpenStack:

OpenStack-Identity-Account-ID OpenStack-Networking-Host-Name OpenStack-Object-Storage-Policy

需要注意的是HTTP標準里并沒有任何header尺寸限制的定義;然而,出于實際原因Node.js對header對象添加了80KB大小的限制。

“不要讓HTTP header(包括狀態行)超過HTTP_MAX_HEADER_SIZE。這一檢查是為了保護嵌入機免受拒絕服務攻擊,這一攻擊里攻擊者可以給我們發送一個沒有結尾的header,這會導致嵌入機一直緩沖”

來自 Node.js HTTP 解析器

4 為你的Node.js REST API挑選合適的框架

挑選最適合你用例的框架是很重要的。

Express, Koa 亦或是 Hapi

Express,Koa和Hapi 可以被用來創造瀏覽器應用,同樣的,它們支持模版和渲染 —— 只需要來命名幾個特性。如果你的應用也需要提供用戶界面,使用它們很有必要。

Restify

另一方面,Restify致力于幫助你構建REST服務。其存在的意思便在于讓你構建“嚴格的”可維護可觀察的API服務。Restify同樣可以和自動化的DTrace協作支持你所有的handler。

Restify主要被用于像npm或者Netflix的應用生產里。

接下篇《十個書寫Node.js REST API的最佳實踐(下)》


原文鏈接:https://www.qcloud.com/community/article/266459

轉載于:https://www.cnblogs.com/liuliliuli2017/p/6809170.html

總結

以上是生活随笔為你收集整理的十个书写Node.js REST API的最佳实践(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。