摘要:方法拋出一個(gè)屬性默認(rèn)為的錯(cuò)誤,這將允許做出適當(dāng)?shù)仨憫?yīng)。這用于修飾其人機(jī)友好型錯(cuò)誤并向上游的請(qǐng)求者報(bào)告非常有用。請(qǐng)注意,不支持使用此功能。這可能會(huì)破壞中間件和本身的預(yù)期功能。
上下文(Context)
此系列文章的應(yīng)用示例已發(fā)布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進(jìn)或 Star 關(guān)注更新. 歡迎 Star.
Koa Context 將 node 的 request 和 response 對(duì)象封裝到單個(gè)對(duì)象中,為編寫 Web 應(yīng)用程序和 API 提供了許多有用的方法。
這些操作在 HTTP 服務(wù)器開發(fā)中頻繁使用,它們被添加到此級(jí)別而不是更高級(jí)別的框架,這將強(qiáng)制中間件重新實(shí)現(xiàn)此通用功能。
每個(gè) 請(qǐng)求都將創(chuàng)建一個(gè) Context,并在中間件中作為接收器引用,或者 ctx 標(biāo)識(shí)符,如以下代碼片段所示:
app.use(async ctx => { ctx; // 這是 Context ctx.request; // 這是 koa Request ctx.response; // 這是 koa Response });
為方便起見許多上下文的訪問器和方法直接委托給它們的 ctx.request 或 ctx.response ,不然的話它們是相同的。
例如 ctx.type 和 ctx.length 委托給 response 對(duì)象,ctx.path 和 ctx.method 委托給 request。
Context 具體方法和訪問器.
ctx.reqNode 的 request 對(duì)象.
ctx.resNode 的 response 對(duì)象.
繞過 Koa 的 response 處理是 __不被支持的__. 應(yīng)避免使用以下 node 屬性:
res.statusCode
res.writeHead()
res.write()
res.end()
ctx.requestkoa 的 Request 對(duì)象.
ctx.responsekoa 的 Response 對(duì)象.
ctx.state推薦的命名空間,用于通過中間件傳遞信息和你的前端視圖。
ctx.state.user = await User.find(id);ctx.app
應(yīng)用程序?qū)嵗?/p> ctx.cookies.get(name, [options])
通過 options 獲取 cookie name:
signed 所請(qǐng)求的cookie應(yīng)該被簽名
koa 使用 cookies 模塊,其中只需傳遞參數(shù)。
ctx.cookies.set(name, value, [options])通過 options 設(shè)置 cookie name 的 value :
maxAge 一個(gè)數(shù)字表示從 Date.now() 得到的毫秒數(shù)
signed cookie 簽名值
expires cookie 過期的 Date
path cookie 路徑, 默認(rèn)是"/"
domain cookie 域名
secure 安全 cookie
httpOnly 服務(wù)器可訪問 cookie, 默認(rèn)是 true
overwrite 一個(gè)布爾值,表示是否覆蓋以前設(shè)置的同名的 cookie (默認(rèn)是 __false__). 如果是 true, 在同一個(gè)請(qǐng)求中設(shè)置相同名稱的所有 Cookie(不管路徑或域)是否在設(shè)置此Cookie 時(shí)從 Set-Cookie 標(biāo)頭中過濾掉。
koa 使用傳遞簡(jiǎn)單參數(shù)的 cookies 模塊。
ctx.throw([status], [msg], [properties])Helper 方法拋出一個(gè) .status 屬性默認(rèn)為 500 的錯(cuò)誤,這將允許 Koa 做出適當(dāng)?shù)仨憫?yīng)。
允許以下組合:
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;
請(qǐng)注意,這些是用戶級(jí)錯(cuò)誤,并用 err.expose 標(biāo)記,這意味著消息適用于客戶端響應(yīng),這通常不是錯(cuò)誤消息的內(nèi)容,因?yàn)槟幌胄孤┕收显敿?xì)信息。
你可以根據(jù)需要將 properties 對(duì)象傳遞到錯(cuò)誤中,對(duì)于裝載上傳給請(qǐng)求者的機(jī)器友好的錯(cuò)誤是有用的。這用于修飾其人機(jī)友好型錯(cuò)誤并向上游的請(qǐng)求者報(bào)告非常有用。
ctx.throw(401, "access_denied", { user: user });
koa 使用 http-errors 來創(chuàng)建錯(cuò)誤。
ctx.assert(value, [status], [msg], [properties])當(dāng) !value 時(shí),Helper 方法拋出類似于 .throw() 的錯(cuò)誤。這與 node 的 assert() 方法類似.
ctx.assert(ctx.state.user, 401, "User not found. Please login!");
koa 使用 http-assert 作為斷言。
ctx.respond為了繞過 Koa 的內(nèi)置 response 處理,你可以顯式設(shè)置 ctx.respond = false;。 如果您想要寫入原始的 res 對(duì)象而不是讓 Koa 處理你的 response,請(qǐng)使用此參數(shù)。
請(qǐng)注意,Koa 不 支持使用此功能。這可能會(huì)破壞 Koa 中間件和 Koa 本身的預(yù)期功能。使用這個(gè)屬性被認(rèn)為是一個(gè) hack,只是便于那些希望在 Koa 中使用傳統(tǒng)的 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=
如果這篇文章對(duì)您有幫助, 感謝 下方點(diǎn)贊 或 Star GitHub: koa-docs-Zh-CN 支持, 謝謝.
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/89473.html
摘要:的對(duì)象提供了用于處理響應(yīng)的方法,該響應(yīng)委托給。應(yīng)用對(duì)象是與的服務(wù)器和處理中間件注冊(cè)的接口,從發(fā)送到中間件,默認(rèn)錯(cuò)誤處理,以及上下文,請(qǐng)求和響應(yīng)對(duì)象的配置。 此系列文章的應(yīng)用示例已發(fā)布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進(jìn)或 Star 關(guān)注更新. 歡迎 Star. showImg(https://segmentfault.com/img/bVNQYf...
此系列文章的應(yīng)用示例已發(fā)布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進(jìn)或 Star 關(guān)注更新. 歡迎 Star. 相關(guān) API 上下文(Context) 請(qǐng)求(Request) 響應(yīng)(Response) 安裝 Koa 依賴 node v7.6.0 或 ES2015及更高版本和 async 方法支持. 你可以使用自己喜歡的版本管理器快速安裝支持的 node 版本:...
摘要:一個(gè)遷移方式是逐個(gè)更新它們。刪除特定的日志記錄行為對(duì)于環(huán)境的顯式檢查從錯(cuò)誤處理中刪除。直接或它不再使用并已廢棄。支持仍然支持分支,但應(yīng)該不會(huì)得到功能性更新。除了此遷移指南外,文檔將針對(duì)最新版本。 從 Koa v1.x 遷移到 v2.x 此系列文章的應(yīng)用示例已發(fā)布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進(jìn)或 Star 關(guān)注更新. 歡迎 Star. 新的中...
摘要:使用承諾和異步功能來擺脫回調(diào)地獄的應(yīng)用程序,并簡(jiǎn)化錯(cuò)誤處理。它暴露了自己的和對(duì)象,而不是的和對(duì)象。因此,可被視為的模塊的抽象,其中是的應(yīng)用程序框架。這使得中間件對(duì)于整個(gè)堆棧而言不僅僅是最終應(yīng)用程序代碼,而且更易于書寫,并更不容易出錯(cuò)。 Koa 與 Express 此系列文章的應(yīng)用示例已發(fā)布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進(jìn)或 Star 關(guān)注更新...
摘要:常見問題此系列文章的應(yīng)用示例已發(fā)布于可以幫助改進(jìn)或關(guān)注更新歡迎替代它更像是,但是很多的好東西被轉(zhuǎn)移到的中間件級(jí)別,以幫助形成更強(qiáng)大的基礎(chǔ)。這使得中間件對(duì)于整個(gè)堆棧而言不僅僅是最終應(yīng)用程序代碼,而且更易于書寫,并更不容易出錯(cuò)。 常見問題 此系列文章的應(yīng)用示例已發(fā)布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進(jìn)或 Star 關(guān)注更新. 歡迎 Star. Koa...
閱讀 2478·2021-11-22 15:35
閱讀 3767·2021-11-04 16:14
閱讀 2696·2021-10-20 13:47
閱讀 2507·2021-10-13 09:49
閱讀 2078·2019-08-30 14:09
閱讀 2376·2019-08-26 13:49
閱讀 887·2019-08-26 10:45
閱讀 2778·2019-08-23 17:54