think.controller.base 继承自 think.http.base 类。项目里的控制器需要继承该类。
export default class extends think.controller.base {
  indexAction(){
  }
}module.exports = think.controller({
  indexAction(){
  }
})传递进来的 http 对象。
return {String}获取当前请求用户的 ip,等同与 http.ip 方法。
export default class extends think.controller.base {
  indexAction(){
    let ip = this.ip();
  }
}return {String}获取当前请求的类型,转化为小写。
export default class extends think.controller.base {
  indexAction(){
    let method = this.method(); //get or post ...
  }
}method {String} 类型return {Boolean}判断当前的请求类型是否是指定的类型。
return {Boolean}判断是否是 GET 请求。
return {Boolean}判断是否是 POST 请求。
method {String}return {Boolean}判断是否是 Ajax 请求。如果指定了 method,那么请求类型也要相同。
export default class extends think.controller.base {
  indexAction(){
    //是ajax 且请求类型是 POST
    let isAjax = this.isAjax('post');
  }
}return {Boolean}是否是 websocket 请求。
return {Boolean}是否是命令行下调用。
callback {String} callback 名称return {Boolean}是否是 jsonp 请求。
name {String} 参数名获取 GET 参数值。
export default class extends think.controller.base {
  indexAction(){
    //获取一个参数值
    let value = this.get('xxx');
    //获取所有的参数值
    let values = this.get();
  }
}name {String} 参数名获取 POST 提交的参数。
export default class extends think.controller.base {
  indexAction(){
    //获取一个参数值
    let value = this.post('xxx');
    //获取所有的 POST 参数值
    let values = this.post();
  }
}name {String} 参数名获取参数值,优先从 POST 里获取,如果取不到再从 GET 里获取。
name {String} 上传文件对应的字段名获取上传的文件,返回值是个对象,包含下面的属性:
{
  fieldName: 'file', //表单字段名称
  originalFilename: filename, //原始的文件名
  path: filepath, //文件保存的临时路径,使用时需要将其移动到项目里的目录,否则请求结束时会被删除
  size: 1000 //文件大小
}如果文件不存在,那么值为一个空对象 {}。
name {String} header 名value {String} header 值获取或者设置 header。
export default class extends think.controller.base {
  indexAction(){
    let accept = this.header('accept'); //获取 header
    this.header('X-NAME', 'thinks'); //设置 header
  }
}time {Number} 过期时间,单位为秒强缓存,设置 Cache-Control 和 Expires 头信息。
export default class extends think.controller.base {
  indexAction(){
    this.expires(86400); //设置过期时间为 1 天。
  }
}获取 userAgent。
referrer {Boolean} 是否只需要 host获取 referrer。
name {String} cookie 名value {String} cookie 值options {Object}获取、设置或者删除 cookie。
export default class extends think.controller.base {
  indexAction(){
    //获取 cookie 值
    let value = this.cookie('think_name');
  }
}export default class extends think.controller.base {
  indexAction(){
    //设置 cookie 值
    this.cookie('think_name', value, {
      timeout: 3600 * 24 * 7 //有效期为一周
    });
  }
}export default class extends think.controller.base {
  indexAction(){
    //删除 cookie
    this.cookie('think_name', null); 
  }
}name {String} session 名value {Mixed} session 值return {Promise}读取、设置和清除 session。
export default class extends think.controller.base {
  async indexAction(){
    //获取session
    let value = await this.session('userInfo');
  }
}export default class extends think.controller.base {
  async indexAction(){
    //设置 session
    await this.session('userInfo', data);
  }
}export default class extends think.controller.base {
  async indexAction(){
    //清除当前用户的 session
    await this.session();
  }
}lang {String} 要设置的语言asViewPath {Boolean} 是否在模版目录添加一层语言目录读取或者设置语言。
key {String} 根据 language 获取对应的语言文本。
url {String} 要跳转的 urlstatusCode {Number} 状态码,默认为 302页面跳转。
name {String | Object} 变量名value {Mixed} 变量值将变量赋值到模版中。
export default class extends think.controller.base {
  indexAction(){
    //单个赋值
    this.assign('title', 'thinkjs');
    //批量赋值
    this.assign({
      name: 'xxx',
      desc: 'yyy'
    })
  }
}templateFile {String} 模版文件地址return {Promise}获取解析后的模版内容。
// 假设文件路径为 /foo/bar/app/home/controller/index.js
export default class extends think.controller.base {
  async indexAction(){
    // home/index_index.html
    let content = await this.fetch();
  }
}// 假设文件路径为 /foo/bar/app/home/controller/index.js
export default class extends think.controller.base {
  async indexAction(){
    // home/index_detail.html
    let content = await this.fetch('detail');
  }
}// 假设文件路径为 /foo/bar/app/home/controller/index.js
export default class extends think.controller.base {
  async indexAction(){
    // home/user_detail.html
    let content = await this.fetch('user/detail');
  }
}// 假设文件路径为 /foo/bar/app/home/controller/index.js
export default class extends think.controller.base {
  async indexAction(){
    // admin/user_detail.html
    let content = await this.fetch('admin/user/detail');
  }
}// 假设文件路径为 /foo/bar/app/home/controller/index.js
export default class extends think.controller.base {
  async indexAction(){
    // home/index_detail.xml
    let content = await this.fetch('detail.xml');
  }
}// 假设文件路径为 /foo/bar/app/home/controller/index.js
export default class extends think.controller.base {
  async indexAction(){
    // /home/xxx/aaa/bbb/c.html
    let content = await this.fetch('/home/xxx/aaa/bbb/c.html');
  }
}templateFile {String} 模版文件路径输出模版内容到浏览器端。查找模版文件策略和 controller.fetch 相同。
data {Mixed} 要输出的内容jsonp 的方法输出内容,获取 callback 名称安全过滤后输出。
export default class extends think.controller.base {
  indexAction(){
    this.jsonp({name: 'thinkjs'});
    //writes
    'callback_fn_name({name: "thinkjs"})'
  }
}data {Mixed} 要输出的内容json 的方式输出内容。
status {Number} 状态码,默认为 404设置状态码。
status {String} 状态码,默认为 403拒绝当前请求。
data {mixed} 要输出的内容encoding {String} 编码输出内容
data {mixed} 要输出的内容encoding {String} 编码输出内容后结束当前请求。
type {String} Content-Typecharset {Boolean} 是否自动追加 charset设置 Content-Type。
filePath {String} 下载文件的具体路径content-Type {String} Content-TypefileName {String} 保存的文件名下载文件。
export default class extends think.controller.base {
  indexAction(){
    let filePath = think.RESOUCE_PATH + '/a.txt';
    //自动识别 Content-Type,保存的文件名为 a.txt
    this.download(filePath);
  }
}export default class extends think.controller.base {
  indexAction(){
    let filePath = think.RESOUCE_PATH + '/a.log';
    //自动识别 Content-Type,保存的文件名为 b.txt
    this.download(filePath, 'b.txt');
  }
}export default class extends think.controller.base {
  indexAction(){
    let filePath = think.RESOUCE_PATH + '/a.log';
    //指定 Content-Type 为 text/html,保存的文件名为 b.txt
    this.download(filePath, 'text/html', 'b.txt');
  }
}data {Mixed} 要输出的数据message {String} 追加的message格式化输出一个正常的数据,一般是操作成功后输出。
http.success({name: 'thinkjs'});
//writes
{
  errno: 0,
  errmsg: '',
  data: {
    name: 'thinkjs'
  }
}这样客户端就可以根据 errno 是否为 0 为判断当前请求是否正常。
errno {Number} 错误号errmsg {String} 错误信息data {Mixed} 额外的数据格式化输出一个异常的数据,一般是操作失败后输出。
注:字段名 errno 和 errmsg 可以在配置里进行修改。
http.fail(100, 'fail')
//writes
{
  errno: 100,
  errmsg: 'fail',
  data: ''
}这样客户端就可以拿到具体的错误号和错误信息,然后根据需要显示了。
注:字段名 errno 和 errmsg 可以在配置里进行修改。
name {String} header key发送请求的执行时间,使用 header 的方式发出。