Express4.x常用API(一):res

最近在学习NodeJS,用到了express,看着官网上的API手册,打算把其中比较常用到的API根据自己理解翻译一下,方便自己学习使用.

该篇打算用来记录下express中res.

由于水平有限,希望能得到大家的修改,在学习过程中我会持续更新修改

  • Properties
  • res.app
  • res.headersSent
  • res.locals
  • Methods
  • res.append()
  • res.cookie()
  • res.clearCookie()
  • res.download()
  • res.end()
  • res.format()
  • res.get()
  • res.json()
  • res.jsonp()
  • res.links()
  • res.location()
  • res.redirect()
  • res.render()
  • res.send()
  • res.sendFile()
  • res.sendStatus()
  • res.set()
  • res.status()
  • res.type()
  • res.vary()


Response

res对象表示的是Express收到了HTTP请求时的应答.

虽然经常写作res,但是其实你可以自己自由的在回调函数中去定义它

1 app.get(‘/‘,function(req,res){//第二个参数res就是Response
2     res.send("!");
3 })

Properties

res.app:只是用于保存哪个express应用实例在使用中间件.res.app和req.app是应答中是一样的.

res.headersSent:是一个boolean值,在你的res对象发送后会变为true,如res.send();之后.

res.locals:一个JavaScript对象,它可以用于获取并保存req中的信息,并且生命周期在整个应答周期中.

Methods

res.append(field[,value])

对HTTP应答头部追加特别的值,值能为字符串或数组.在之后使用res.set()会重置之前所有的值.

res.cookie(name,value[,options])

就是设置cookie的函数啦~这个name和value就不必多说了,但是值得注意的是value应该是字符串或者能转换为JSON的对象.options参数是一个对象并含有下列属性.

 Property  Type  Description
 domain String   cookie的域名,默认为app的名称
 expires Date   cookie的有效期,没有指定或设为0,创建的有效期为此次会话
 httpOnly Boolean   标志cookie只能被web服务器使用
 maxAge String   方便的通过毫秒设置cookie的有效期
 path String  cookie的path,默认是"/".
 secure Boolean   表示这个cookie只能用于HTTPS
 signed Boolean   指出该cookie是否被标记

  

  

 

res.clearCookie(name[,options])

  顾名思义,清楚cookie的函数,options可以参考上表

res.download(path[,filename][,fn])

  和res.attachment()后res.send()/res.end()一样,用于提供文件的下载服务,第一个参数为文件在服务器的位置,第二个参数则是提供给用户的默认的下载名称,第三个参数为回调函数,可以用于处理下载错误或统计下载数.res.download()使用了res.sendFile()来传输文件

res.end([data][,encoding])

结束应答的处理,这个方法来自于Node core

链接在此

这个方法标志着服务器应答的所有头部和数据都已经发送完毕.在express中通常用于快速的结束无数据的应答,如果需要返回数据,用res.send()和res.json().

res.format(object)

调用req.accepts()来获取请求的类型,并根据请求类型执行不同的函数,对于这个,还是放代码比较好吧.以下为官方API的代码,在无匹配的情况下默认执行default函数.

 1 res.format({
 2   ‘text/plain‘: function(){
 3     res.send(‘hey‘);
 4   },
 5
 6   ‘text/html‘: function(){
 7     res.send(‘<p>hey</p>‘);
 8   },
 9
10   ‘application/json‘: function(){
11     res.send({ message: ‘hey‘ });
12   },
13
14   ‘default‘: function() {
15     // log the request and respond with 406
16     res.status(406).send(‘Not Acceptable‘);
17   }
18 });

  res.get(field)

  返回相应头部信息,注意的是在处理周期中,不使用res.append()和res.set()设置头部信息,头部信息为undefined.

res.json([body])

  发送一个JSON应答,这个方法和res.send()使用对象或数组作为参数完全相同(但是测试后发现在处理null上,两个函数是有差别的,send()会返回空白字符串,而json()会返回null字符串).你也可以用null和undefined作为参数传入(尽管它们在严格意义上不是有效的JSON数据)

res.jsonp([body])

  和res.json的方法是基本一样的,但是添加了对jsonp的支持.对于回调函数的名称可以用app.set(‘jsonp callback name‘,‘callbackName‘)来设置

res.links(links)

  设置Link应答头部.

res.location(path)

  设置HTTP应答location头部,返回状态码302时(表示文档转移时)自动跳转到location所表示链接上.设置为"back"则跳转到前一个页面

res.redirect([status,]path)

  重定向到其他网页,status默认为302.感觉和res.location()+res.status(302).end()差不多,不过path支持back字符串来回退到referer,".."来回退上一个目录

res.render(view[,locals][,callback])

    • 如果有callback函数:渲染后的HTML string作为参数传入,不会直接发送到接收方.next(err)不被执行,会将err当作参数传入,不会有默认响应.
    • 如果没有callback函数:渲染后的HTML string会直接返回给请求方.发生错误会执行next(err)

  可以在callback函数中进行渲染后模板的拼接或修改.

res.send([body])

  发送HTTP应答,body参数有以下几个选项,如果之前没有定义Content-Type,根据参数不同有不同的Content-Type

    • 对象->JSON
    • 数组->JSON
    • 字符串->test/html
    • Buffer对象->application/octet-stream
    • 数字->根据数字对应状态码的不同返回字符,200->OK,404->Not Found

  该方法主要特点在于在non-streaming应答时能自动的完成对header的添加.如HTTP缓存和Content-Length

res.sendFile(path,[,options][,fn])

  传输path指出的文件,并根据文件拓展名生成Content-Type.除非root在options中已经被设置了,不然path应该是文件的绝对路径.

  options对象属性设置如下表:

Property Description Default Availability
maxAge 设置Cache-Control的max-age属性,值为毫秒或ms format 0  
root 设置根目录    
lastModified 设置Last-Modified头部为系统上文件的最后修改日期,设置为false可以禁用它 Enabled 4.9.0+
headers 设置HTTP头部,类型为对象    
dotfiles 设置是否提供隐藏文件,可设置为"allow","deny","ignore" "ignore"  

  

在传输完成或者错误发生后,将会调用fn(err)

res.sendStatus(statusCode)

发送HTTP应答状态码,在状态码有效情况下res.sendStatus(200) 等同于res.status(200).send("OK")

如果输入的状态码无效,HTTP statu依旧会被设定为参数值,并且返回字符串变为传入参数值.

res.set(field[,value])

一次性设定完应答头部信息,如果之前有设置头部信息,则会被覆盖.传入的一个参数为对象/两个参数为相对应的头部和值.

res.status(code)

使用该方法设定HTTP 应答的status.相关:Response.statusCode()

res.type(type)

使用该方法设定HTTP 应答的Content-Type,如果传入参数为"/",则Content-Type会被设置为type.该方法用于判断type的函数来自于mime.lookup()

res.vary(field)

在没有Vary应答头部时增加Vary应答头部.

时间: 2024-10-12 09:24:11

Express4.x常用API(一):res的相关文章

小程序常用API介绍

小程序常用API接口 ? wx.request https网络请求 wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 method:"GET", data: { x: '' , y: '' }, header: { 'content-type': 'application/json' }, success: function(res) { console.log(res.data) } }) ? 本地缓存 ? 通过key的形式添加缓存setS

C++ 中超类化和子类化常用API

在windows平台上,使用C++实现子类化和超类化常用的API并不多,由于这些API函数的详解和使用方法,网上一大把.本文仅作为笔记,简单的记录一下. 子类化:SetWindowLong,GetWindowLong,CallWindowProc,FindWindowEx 超类化:GetClassInfoEx,RegisterClassEx,UnRegisterClass 以上函数在代码中的使用见<C++ 中超类化和子类化> VC中基于SDK编程的窗口子类化 VC中基于SDK编程的窗口子类化的

List容器——ArrayList及常用API

List: ①   List容器是有序的collection(也称为序列).此接口的用户可以对List容器中每个元素的插入位置进行精确地控制.用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素.List容器允许插入重复的值,包括null; ②   最常见的两个List接口的实现类是ArrayList和LinkedList; ArrayList及常用API: ①   ArrayList—动态数组; ②   ArrayList类扩展了AbstractList并实现了List接口

hadoop常用api编写

package hsfs常用api; import java.io.ByteArrayInputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.net.URI;import java.net.URISyntaxException; import org.apache.hadoop.conf.Configuration;

hadoop java接口及常用api

# java接口及常用api package com.yting.hadoop.hdfs; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputS

java:Hibernate框架(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态)

1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件  准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configurati

STL vector常用API

1.容器:序列容器(时间决定).关联式容器(容器中的数据有一定规则) 2.迭代器:通过迭代器寻找.遍历容器中的数据 vetor的使用:数据遍历与输出 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<vector> //向量 动态数组 #include<algorithm> //算法头文件 #include<string> using namespace std; void myPrint

Javascript操作DOM常用API总结

Javascript操作DOM常用API总结 原文地址:http://luopq.com/2015/11/30/javascript-dom/ 类型 Node类型(ELEMENT_NODE:1 ATTRIBUTE_NODE:2 TEXT_NODE:3 COMMENT_NODE:8``DOCUMENT_NODE:9 DOCUMENT_FRAGMENT_NODE:11) 节点创建型(createElement createTextNode cloneNode createDocumentFragme

Collection类及常用API

Collection类及常用API Collection—类集工具类,定义了若干用于类集和映射的算法,这些算法被定义为静态方法,具体查看api文档; a)  public static void sort(List<T> liet) b)  public static int binarySearch(List<T> list,T key) c)  public static void reverse(List<?> list) d)  public static vo