当前位置: 首页 > 后端技术 > Node.js

Koav2.x中文文档响应(Response)

时间:2023-04-03 20:25:53 Node.js

本系列文章的应用示例已经发布在GitHub上:koa-docs-Zh-CN。您可以通过Fork帮助改进或Star以关注更新。欢迎来到星空。响应(Response)KoaResponse对象是在node的vanillaresponse对象之上的抽象,为HTTP服务器开发提供了很多有用的功能。APIresponse.header响应头对象。response.headers响应头对象。别名是response.header。response.socket请求套接字。response.status获取响应状态。默认情况下,response.status设置为404而不是像节点的res.statusCode默认设置的200。response.status=通过数字代码设置响应状态:100"继续"101"切换协议"102"处理"200"确定"201"创建"202"接受"203"非权威信息"204"无内容"205"重置内容"206"部分内容"207"多状态"208"已举报"226"我用过"300"多选"301"永久移动"302"找到"303"查看其他"304"未修改"305"使用代理"307"临时重定向"308"永久重定向"400"错误请求"401"未经授权"402"需要付费"403"禁止"404"未找到"405"方法不允许"406"不可接受"407"代理需要身份验证"408"请求超时"409"冲突"410"消失"??411"所需长度"412"前提条件失败"413"负载太大"414"uri太长"415"不支持的媒体类型"416"范围不满足"417“期望失败”418“我是茶壶”422“不可处理的实体”423“锁定”424“失败的依赖”426“需要升级”428“需要前置条件”429“请求太多”431“请求头er字段太大"500"内部服务器错误"501"未实现"502"坏网关"503"服务不可用"504"网关超时"505"不支持http版本"506"变体也协商"507"存储空间不足"508"loopdetected"510"notextended"511"networkauthenticationrequired"__注意__:不要太担心记住这些字符串,如果你犯了错误,你可以参考这个列表来更正.response.message的状态随时获取响应消息。默认情况下,response.message与response.status.response.message=将响应的状态消息设置为给定值response.length=将响应的Content-Length设置为给定值。response.length以数字开头返回响应的Content-Length,或者派生自ctx.body,或者undefined.response.body获取响应body.response.body=将响应主体设置为以下之一:stringwritetoBufferwritetoStreampipeObject||ArrayJSON-stringifiednullresponsewithnocontent如果没有设置response.status,Koa会自动设置status为200或204。StringContent-Type默认为text/html或text/plain,默认字符集是utf-8。Content-Length字段也是如此。BufferContent-Type默认为application/octet-stream,Content-Length字段也是如此。StreamContent-Type默认为application/octet-stream。每当流被设置为响应体时,.onerror被用作一个侦听器,它会自动添加到错误事件中以捕获任何错误。此外,无论何时关闭请求(甚至过早关闭),流都将被销毁。如果你不想要这两个特性,就不要直接把stream做成body。例如,当在代理中将正文设置为HTTP流时,您可能不想这样做,因为它会中断底层连接。请参阅:https://github.com/koajs/koa/…了解更多信息。下面是一个不自动销毁流的流错误处理示例:.pipe(传递());});ObjectContent-Type默认为application/json。这包括普通对象{foo:'bar'}和数组['foo','bar']。response.get(field)以不区分大小写的方式获取响应头字段值字段。constetag=ctx.response.get('ETag');response.set(field,value)将响应头字段设置为值:ctx.set('Cache-Control','no-cache');response.append(field,value)追加值为val的附加头字段。ctx.append('链接','');response.set(fields)用一个对象设置多个响应头字段:ctx.set({'Etag':'1234','Last-Modified':date});response.remove(field)删除标题字段。response.type获取不带参数“charset”的响应内容类型。constct=ctx.type;//=>"image/png"response.type=通过mime字符串或文件扩展名设置响应内容类型。ctx.type='文本/纯文本;charset=utf-8';ctx.type='image/png';ctx.type='.png';ctx.type='png';注意:在适当的地方为您选择字符集,例如response.type='html'将默认为“utf-8”。如果要覆盖字符集,请使用ctx.set('Content-Type','text/html')将响应头字段设置为直接值。response.is(types...)与ctx.request.is()非常相似。检查响应类型是否是提供的类型之一。这对于创建操纵响应的中间件特别有用。例如,这里有一个中间件可以剪切除流媒体之外的所有HTML响应。constminify=require('html-minifier');app.use(async(ctx,next)=>{awaitnext();if(!ctx.response.is('html'))返回;让body=ctx.body;如果(!body||body.pipe)返回;如果(Buffer.isBuffer(body))body=body.toString();ctx.body=minify(body);});response.redirect(url,[alt])执行[302]重定向到url。字符串“back”是专门为Referrer支持而提供的。当Referrer不存在时,使用alt或“/”。ctx.redirect('back');ctx.redirect('back','/index.html');ctx.redirect('/login');ctx.redirect('http://google.com');要更改“302”的默认状态,只需分配此调用之前或之后的状态即可。要更改正文,请遵循此调用:ctx.status=301;ctx.redirect('/购物车');ctx.body='重定向到购物车';response.attachment([filename])将Content-Disposition设置为“附件”以指示客户端提示下载。(可选)指定下载的文件名。response.headerSent检查是否已发送响应标头。有助于查看客户端是否会收到错误通知。response.lastModified返回Last-Modified标头作为日期(如果存在)。response.lastModified=将Last-Modified标头设置为适当的UTC字符串。您可以将其设置为日期或日期字符串。ctx.response.lastModified=newDate();response.etag=设置包含包裹在"中的ETag的响应,注意没有对应的response.etaggetter。ctx.response.etag=crypto.createHash('md5').update(ctx.body).digest('hex');response.vary(field)Variesonfield.response.flushHeaders()flushanysetheadersandstartsthebody.如果这篇文章对你有帮助,谢谢LikeorStarGitHub:koa-docs-Zh-CNsupport,谢谢。