egg.js封装常用格式参数的获取方法

本文介绍了一种封装方法,用于处理HTTP GET和POST请求中的不同类型的参数,包括字符串、数字、日期、JSON数据及逗号分隔的数字。通过验证和转换确保参数的有效性和正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

get获取具体参数方式的封装 app/controller/core/base.js

'use strict';

const { Controller } = require('egg');

class BaseController extends Controller {
  /**
   * 获取get传值
   * @param {*} val 对象的元素名
   * @param {*} defaultVal 默认值
   */
  getVal(val, defaultVal = '') {
    return this.ctx.query[val] ? this.ctx.query[val] : defaultVal;
  }
}

module.exports = BaseController;


注:1、以下部分如果是base.js内的方法将直接给出方法代码,不再给出其余的代码
2、所有方法都将依托于getVal和postVal

post获取具体参数的封装 app/controller/core/base.js

  /**
   * 获取post传值
   * @param {*} val 对象的元素名
   * @param {*} defaultVal 默认值
   */
  postVal(val, defaultVal = '') {
    return this.ctx.request.body[val] ? this.ctx.request.body[val] : defaultVal;
  }

获取数字参数值

  // app/controller/core/base.js
  /**
   * post方式获取数字信息
   * @param {*} val 对象元素名
   * @param {*} defaultVal 默认值
   */
  async postInt(val, defaultVal = '') {
    val = Number(await this.postVal(val, defaultVal));
    return isNaN(val) === true ? 0 : val;
  }

  /**
   * get方式获取数字信息
   * @param {*} val 对象元素名
   * @param {*} defaultVal 默认值
   */
  async getInt(val, defaultVal = '') {
    val = Number(await this.getVal(val, defaultVal));
    return isNaN(val) === true ? 0 : val;
  }

获取去掉html的字符串参数值

app/extend/helper.js新增代码

'use strict';
/**
 * 清空字符串内的html标签
 * @param {*} val 值
 */
exports.cleanHtml = val => {
  return val.replace(/<.*?>/g, '');
};

app/controller/core/base.js新增代码

  // app/controller/core/base.js
  /**
   * post方式获取不存在html标签的字符串
   * @param {*} val 对象元素名
   * @param {*} defaultVal 默认值
   */
  async postStr(val, defaultVal = '') {
    val = await this.postVal(val, defaultVal);
    return this.ctx.helper.cleanHtml(val);
  }

  /**
   * get方式获取不存在html标签的字符串
   * @param {*} val 对象元素名
   * @param {*} defaultVal 默认值
   */
  async getStr(val, defaultVal = '') {
    val = await this.getVal(val, defaultVal);
    return this.ctx.helper.cleanHtml(val);
  }

获取日期和日期时间格式的参数值

app/extend/helper.js新增代码

'use strict'
/**
 * 校验是否是日期格式
 * @param {*} dateStr yyyy-mm-dd字符串
 */
exports.checkDate = dateStr => {
  const preg = /^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)$/;
  if (!preg.test(dateStr)) {
    return false;
  }
  return true;
};

/**
 * 校验日期时间格式
 * @param {*} dateStr yyyy-mm-dd HH:ii:ss字符串
 */
exports.checkDateTime = dateStr => {
  const preg = /^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))( (([01]\d)|(2[0-3])):[0-5]\d:[0-5]\d)?$/;
  if (!preg.test(dateStr)) {
    return false;
  }
  return true;
};

app/controller/core/base.js新增代码

  // app/controller/core/base.js
  /**
   * get方式获取日期信息
   * @param {*} val 对象元素名称
   * @param {*} defaultVal 默认值
   */
  async getDate(val, defaultVal = '') {
    val = await this.getVal(val, defaultVal);
    return this.ctx.helper.checkDate(val) ? val : '';
  }

  /**
   * post方式获取日期信息
   * @param {*} val 对象元素名称
   * @param {*} defaultVal 默认值
   */
  async postDate(val, defaultVal = '') {
    val = await this.postVal(val, defaultVal);
    return this.ctx.helper.checkDate(val) ? val : '';
  }

  /**
   * get方式获取日期-时间格式信息
   * @param {*} val 对象元素名称
   * @param {*} defaultVal 默认值
   */
  async getDateTime(val, defaultVal = '') {
    val = await this.getVal(val, defaultVal);
    return this.ctx.helper.checkDateTime(val) ? val : '';
  }

  /**
   * post方式获取日期-时间格式信息
   * @param {*} val 对象元素名称
   * @param {*} defaultVal 默认值
   */
  async postDateTime(val, defaultVal = '') {
    val = await this.postVal(val, defaultVal);
    return this.ctx.helper.checkDateTime(val) ? val : '';
  }

获取json数据格式的参数值

app/controller/core/base.js新增代码

  // app/controller/core/base.js
  /**
   * post方式获取json数据(尽量不要使用此格式)
   * @param {*} val 对象元素名称
   * @param {*} defaultVal 默认值
   */
  async postJson(val, defaultVal = '') {
    val = await this.postVal(val, defaultVal);
    return JSON.parse(val);
  }

  /**
   * get方式获取json数据(尽量不要使用此格式)
   * @param {*} val 对象元素名称
   * @param {*} defaultVal 默认值
   */
  async getJson(val, defaultVal = '') {
    val = await this.getVal(val, defaultVal);
    return val ? JSON.parse(val) : '';
  }

获取逗号隔开的数字参数值

app/extend/helper.js新增代码

'use strict'
/**
 * 验证是否是逗号隔开的数字
 * @param {*} val 逗号隔开的数字
 */
exports.isNumbers = val => {
  const preg = /^\d+(,\d+)*$/;
  if (!preg.test(val)) {
    return false;
  }
  return true;
};

app/controller/core/base.js新增代码

  // app/controller/core/base.js
  /**
   * get方式获取逗号隔开的数字
   * @param {*} val 对象元素名称
   * @param {*} defaultVal 默认值
   */
  async getNumbers(val, defaultVal = '') {
    val = await this.getVal(val, defaultVal);
    if (this.ctx.helper.isNumbers(val) === true) {
      return val;
    }
    return '';
  }

  /**
   * post方式获取逗号隔开的数字
   * @param {*} val 对象元素名称
   * @param {*} defaultVal 默认值
   */
  async postNumbers(val, defaultVal = '') {
    val = await this.postVal(val, defaultVal);
    if (this.ctx.helper.isNumbers(val) === true) {
      return val;
    }
    return '';
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值