Skip to content

内置函数

本页面介绍Magic-API中常用的内置函数。

日期时间函数

当前时间

javascript
// 当前日期时间
var now = new Date();

// 格式化日期
import DateFormat from 'date';

var formatted = DateFormat.format(now, 'yyyy-MM-dd HH:mm:ss');
// 输出: 2024-01-01 12:00:00

var dateOnly = DateFormat.format(now, 'yyyy-MM-dd');
// 输出: 2024-01-01

日期解析

javascript
import DateFormat from 'date';

// 解析字符串为日期
var date = DateFormat.parse('2024-01-01 12:00:00', 'yyyy-MM-dd HH:mm:ss');

// 获取时间戳
var timestamp = date.getTime();

日期计算

javascript
import DateFormat from 'date';

var now = new Date();

// 加减天数
var tomorrow = DateFormat.addDays(now, 1);
var yesterday = DateFormat.addDays(now, -1);

// 加减小时
var nextHour = DateFormat.addHours(now, 1);

// 加减月份
var nextMonth = DateFormat.addMonths(now, 1);

// 获取月初
var monthStart = DateFormat.getMonthStart(now);

// 获取月末
var monthEnd = DateFormat.getMonthEnd(now);

字符串函数

常用操作

javascript
var str = "  Hello World  ";

// 去空格
str.trim();           // "Hello World"

// 大小写
str.toLowerCase();    // "  hello world  "
str.toUpperCase();    // "  HELLO WORLD  "

// 分割
"a,b,c".split(",");   // ["a", "b", "c"]

// 替换
"hello".replace("l", "L");      // "heLlo"
"hello".replaceAll("l", "L");   // "heLLo"

// 截取
"hello".substring(0, 3);  // "hel"
"hello".substr(1, 3);     // "ell"

// 包含
"hello".contains("ell");  // true
"hello".startsWith("he"); // true
"hello".endsWith("lo");   // true

字符串工具

javascript
import StringUtil from 'string';

// 判空
StringUtil.isEmpty("");         // true
StringUtil.isEmpty(null);       // true
StringUtil.isNotEmpty("hello"); // true

// 空值处理
StringUtil.defaultIfEmpty(null, "default");  // "default"

// 拼接
StringUtil.join(",", ["a", "b", "c"]);  // "a,b,c"

// 格式化
StringUtil.format("Hello, {}!", "World");  // "Hello, World!"

数学函数

javascript
// 基础运算
Math.abs(-5);      // 5
Math.max(1, 2, 3); // 3
Math.min(1, 2, 3); // 1
Math.round(1.5);   // 2
Math.floor(1.9);   // 1
Math.ceil(1.1);    // 2

// 随机数
Math.random();           // 0-1之间的随机数
Math.floor(Math.random() * 100);  // 0-99的随机整数

// 幂运算
Math.pow(2, 3);    // 8
Math.sqrt(16);     // 4

集合函数

数组操作

javascript
var arr = [1, 2, 3, 4, 5];

// 遍历
arr.forEach(item => log.info(item));

// 映射
var doubled = arr.map(x => x * 2);  // [2, 4, 6, 8, 10]

// 过滤
var filtered = arr.filter(x => x > 3);  // [4, 5]

// 查找
var found = arr.find(x => x > 3);  // 4
var index = arr.findIndex(x => x > 3);  // 3

// 判断
var hasEven = arr.some(x => x % 2 == 0);  // true
var allPositive = arr.every(x => x > 0);  // true

// 归约
var sum = arr.reduce((a, b) => a + b, 0);  // 15

// 排序
arr.sort((a, b) => b - a);  // [5, 4, 3, 2, 1]

// 包含
arr.includes(3);  // true

集合工具

javascript
import CollectionUtil from 'collection';

var list = [1, 2, 3];

// 判空
CollectionUtil.isEmpty(list);     // false
CollectionUtil.isNotEmpty(list);  // true

// 获取第一个/最后一个
CollectionUtil.first(list);  // 1
CollectionUtil.last(list);   // 3

// 去重
CollectionUtil.distinct([1, 1, 2, 2, 3]);  // [1, 2, 3]

JSON函数

javascript
// 对象转JSON字符串
var obj = { name: "test", value: 123 };
var jsonStr = JSON.stringify(obj);
// {"name":"test","value":123}

// JSON字符串转对象
var parsed = JSON.parse('{"name":"test","value":123}');
// { name: "test", value: 123 }

// 格式化输出
var pretty = JSON.stringify(obj, null, 2);

加密函数

javascript
import Encrypt from 'encrypt';

// MD5
var md5Hash = Encrypt.md5("hello");

// SHA256
var sha256Hash = Encrypt.sha256("hello");

// Base64编码
var encoded = Encrypt.base64Encode("hello");
var decoded = Encrypt.base64Decode(encoded);

// AES加密
var key = "1234567890123456";
var encrypted = Encrypt.aesEncrypt("hello", key);
var decrypted = Encrypt.aesDecrypt(encrypted, key);

UUID生成

javascript
import UUID from 'uuid';

// 生成UUID
var uuid = UUID.random();  // 550e8400-e29b-41d4-a716-446655440000

// 不带横线的UUID
var uuid32 = UUID.random().replace(/-/g, "");

HTTP请求

javascript
// GET请求
var getResult = http.get('https://api.example.com/data');

// 带参数的GET
var getWithParams = http.get('https://api.example.com/search', {
    params: {
        keyword: 'test',
        page: 1
    }
});

// POST请求
var postResult = http.post('https://api.example.com/submit', {
    headers: {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer token'
    },
    body: {
        name: 'test',
        value: 123
    }
});

// 设置超时
var result = http.get('https://api.example.com/data', {
    timeout: 5000  // 5秒超时
});

// 处理响应
if (result.code == 200) {
    return result.data;
} else {
    exit 500, "请求失败";
}

Redis操作

javascript
// 字符串操作
redis.set("key", "value");
redis.setex("key", 300, "value");  // 带过期时间
var value = redis.get("key");
redis.del("key");

// 判断存在
var exists = redis.exists("key");

// 设置过期时间
redis.expire("key", 3600);
var ttl = redis.ttl("key");

// Hash操作
redis.hset("user:1", "name", "张三");
redis.hget("user:1", "name");
redis.hgetAll("user:1");

// List操作
redis.lpush("list", "value");
redis.rpush("list", "value");
redis.lrange("list", 0, -1);

// Set操作
redis.sadd("set", "member");
redis.smembers("set");
redis.sismember("set", "member");

// 自增
redis.incr("counter");
redis.incrBy("counter", 10);

环境变量

javascript
// 获取环境变量
var dbHost = env.get('DB_HOST');
var apiKey = env.get('API_KEY');

// 带默认值
var port = env.get('PORT', '8080');

下一步

成都艾唯特软件有限公司