摘要:方法拋出一個屬性默認為的錯誤,這將允許做出適當地響應。這用于修飾其人機友好型錯誤并向上游的請求者報告非常有用。請注意,不支持使用此功能。這可能會破壞中間件和本身的預期功能。
上下文(Context)
此系列文章的應用示例已發布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進或 Star 關注更新. 歡迎 Star.
Koa Context 將 node 的 request 和 response 對象封裝到單個對象中,為編寫 Web 應用程序和 API 提供了許多有用的方法。
這些操作在 HTTP 服務器開發中頻繁使用,它們被添加到此級別而不是更高級別的框架,這將強制中間件重新實現此通用功能。
每個 請求都將創建一個 Context,并在中間件中作為接收器引用,或者 ctx 標識符,如以下代碼片段所示:
app.use(async ctx => { ctx; // 這是 Context ctx.request; // 這是 koa Request ctx.response; // 這是 koa Response });
為方便起見許多上下文的訪問器和方法直接委托給它們的 ctx.request 或 ctx.response ,不然的話它們是相同的。
例如 ctx.type 和 ctx.length 委托給 response 對象,ctx.path 和 ctx.method 委托給 request。
Context 具體方法和訪問器.
ctx.reqNode 的 request 對象.
ctx.resNode 的 response 對象.
繞過 Koa 的 response 處理是 __不被支持的__. 應避免使用以下 node 屬性:
res.statusCode
res.writeHead()
res.write()
res.end()
ctx.requestkoa 的 Request 對象.
ctx.responsekoa 的 Response 對象.
ctx.state推薦的命名空間,用于通過中間件傳遞信息和你的前端視圖。
ctx.state.user = await User.find(id);ctx.app
應用程序實例引用
ctx.cookies.get(name, [options])通過 options 獲取 cookie name:
signed 所請求的cookie應該被簽名
koa 使用 cookies 模塊,其中只需傳遞參數。
ctx.cookies.set(name, value, [options])通過 options 設置 cookie name 的 value :
maxAge 一個數字表示從 Date.now() 得到的毫秒數
signed cookie 簽名值
expires cookie 過期的 Date
path cookie 路徑, 默認是"/"
domain cookie 域名
secure 安全 cookie
httpOnly 服務器可訪問 cookie, 默認是 true
overwrite 一個布爾值,表示是否覆蓋以前設置的同名的 cookie (默認是 __false__). 如果是 true, 在同一個請求中設置相同名稱的所有 Cookie(不管路徑或域)是否在設置此Cookie 時從 Set-Cookie 標頭中過濾掉。
koa 使用傳遞簡單參數的 cookies 模塊。
ctx.throw([status], [msg], [properties])Helper 方法拋出一個 .status 屬性默認為 500 的錯誤,這將允許 Koa 做出適當地響應。
允許以下組合:
ctx.throw(400); ctx.throw(400, "name required"); ctx.throw(400, "name required", { user: user });
例如 ctx.throw(400, "name required") 等效于:
const err = new Error("name required"); err.status = 400; err.expose = true; throw err;
請注意,這些是用戶級錯誤,并用 err.expose 標記,這意味著消息適用于客戶端響應,這通常不是錯誤消息的內容,因為您不想泄漏故障詳細信息。
你可以根據需要將 properties 對象傳遞到錯誤中,對于裝載上傳給請求者的機器友好的錯誤是有用的。這用于修飾其人機友好型錯誤并向上游的請求者報告非常有用。
ctx.throw(401, "access_denied", { user: user });
koa 使用 http-errors 來創建錯誤。
ctx.assert(value, [status], [msg], [properties])當 !value 時,Helper 方法拋出類似于 .throw() 的錯誤。這與 node 的 assert() 方法類似.
ctx.assert(ctx.state.user, 401, "User not found. Please login!");
koa 使用 http-assert 作為斷言。
ctx.respond為了繞過 Koa 的內置 response 處理,你可以顯式設置 ctx.respond = false;。 如果您想要寫入原始的 res 對象而不是讓 Koa 處理你的 response,請使用此參數。
請注意,Koa 不 支持使用此功能。這可能會破壞 Koa 中間件和 Koa 本身的預期功能。使用這個屬性被認為是一個 hack,只是便于那些希望在 Koa 中使用傳統的 fn(req, res) 功能和中間件的人。
Request 別名以下訪問器和 Request 別名等效:
ctx.header
ctx.headers
ctx.method
ctx.method=
ctx.url
ctx.url=
ctx.originalUrl
ctx.origin
ctx.href
ctx.path
ctx.path=
ctx.query
ctx.query=
ctx.querystring
ctx.querystring=
ctx.host
ctx.hostname
ctx.fresh
ctx.stale
ctx.socket
ctx.protocol
ctx.secure
ctx.ip
ctx.ips
ctx.subdomains
ctx.is()
ctx.accepts()
ctx.acceptsEncodings()
ctx.acceptsCharsets()
ctx.acceptsLanguages()
ctx.get()
Response 別名以下訪問器和 Response 別名等效:
ctx.body
ctx.body=
ctx.status
ctx.status=
ctx.message
ctx.message=
ctx.length=
ctx.length
ctx.type=
ctx.type
ctx.headerSent
ctx.redirect()
ctx.attachment()
ctx.set()
ctx.append()
ctx.remove()
ctx.lastModified=
ctx.etag=
如果這篇文章對您有幫助, 感謝 下方點贊 或 Star GitHub: koa-docs-Zh-CN 支持, 謝謝.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/89473.html
摘要:的對象提供了用于處理響應的方法,該響應委托給。應用對象是與的服務器和處理中間件注冊的接口,從發送到中間件,默認錯誤處理,以及上下文,請求和響應對象的配置。 此系列文章的應用示例已發布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進或 Star 關注更新. 歡迎 Star. showImg(https://segmentfault.com/img/bVNQYf...
此系列文章的應用示例已發布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進或 Star 關注更新. 歡迎 Star. 相關 API 上下文(Context) 請求(Request) 響應(Response) 安裝 Koa 依賴 node v7.6.0 或 ES2015及更高版本和 async 方法支持. 你可以使用自己喜歡的版本管理器快速安裝支持的 node 版本:...
摘要:一個遷移方式是逐個更新它們。刪除特定的日志記錄行為對于環境的顯式檢查從錯誤處理中刪除。直接或它不再使用并已廢棄。支持仍然支持分支,但應該不會得到功能性更新。除了此遷移指南外,文檔將針對最新版本。 從 Koa v1.x 遷移到 v2.x 此系列文章的應用示例已發布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進或 Star 關注更新. 歡迎 Star. 新的中...
摘要:使用承諾和異步功能來擺脫回調地獄的應用程序,并簡化錯誤處理。它暴露了自己的和對象,而不是的和對象。因此,可被視為的模塊的抽象,其中是的應用程序框架。這使得中間件對于整個堆棧而言不僅僅是最終應用程序代碼,而且更易于書寫,并更不容易出錯。 Koa 與 Express 此系列文章的應用示例已發布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進或 Star 關注更新...
摘要:常見問題此系列文章的應用示例已發布于可以幫助改進或關注更新歡迎替代它更像是,但是很多的好東西被轉移到的中間件級別,以幫助形成更強大的基礎。這使得中間件對于整個堆棧而言不僅僅是最終應用程序代碼,而且更易于書寫,并更不容易出錯。 常見問題 此系列文章的應用示例已發布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進或 Star 關注更新. 歡迎 Star. Koa...
閱讀 2473·2021-11-22 15:35
閱讀 3763·2021-11-04 16:14
閱讀 2694·2021-10-20 13:47
閱讀 2504·2021-10-13 09:49
閱讀 2074·2019-08-30 14:09
閱讀 2375·2019-08-26 13:49
閱讀 885·2019-08-26 10:45
閱讀 2774·2019-08-23 17:54