ビルトインJSライブラリの使用
EchoAPIは、事前リクエストおよび事後リクエストスクリプトで簡単に使用できる実用的なサードパーティJavaScriptライブラリの幅広い範囲を提供しており、開発プロセスを強化します。
組み込みライブラリのリスト
組み込みライブラリをrequire/importを使用して参照する必要はありません。直接使用できます!
_
lodash - JavaScriptのユーティリティライブラリ
Usage Documentation Example:
_.forEach([1, 2], function(value) {
console.log(value);
});
// => Logs 1 then 2.
_.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
console.log(key);
});
// => Logs 'a' then 'b' (iteration order is not guaranteed).
uuid
UUIDを生成する
let uuidStr = uuid.v4();
console.log(uuidStr) // e.g., 78fdb729-ed5f-4dff-860c-d87d02b43078
CryptoJS
エンコード/デコード用のライブラリで、Base64、MD5、SHA、AESなどのメソッドを提供しています。 使用例:
Usage Documentation
(Documentation backup link)
// Encrypt
var ciphertext = CryptoJS.AES.encrypt('my message', 'secret key 123').toString();
// Decrypt
var bytes = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');
var originalText = bytes.toString(CryptoJS.enc.Utf8);
console.log(originalText); // 'my message'
JSON5
JSONデータの柔軟なパースと文字列化を提供します
Usage Documentation
(Documentation backup link)
let _json = {
// comments
unquoted: 'and you can quote me on that',
singleQuotes: 'I can use "double quotes" here',
lineBreaks: "Look, Mom! \\\nNo \\n's!",
hexadecimal: 0xdecaf,
leadingDecimalPoint: .8675309, andTrailing: 8675309.,
positiveSign: +1,
trailingComma: 'in objects', andIn: ['arrays',],
"backwardsCompatible": "with JSON",
};
console.log(JSON5.stringify(_json))
let _jsonStr = {
// comments
unquoted: 'and you can quote me on that',
singleQuotes: 'I can use "double quotes" here',
lineBreaks: "Look, Mom! \\\nNo \\\\n's!",
hexadecimal: 0xdecaf,
leadingDecimalPoint: .8675309, andTrailing: 8675309.,
positiveSign: +1,
trailingComma: 'in objects', andIn: ['arrays',],
"backwardsCompatible": "with JSON",
};
console.log(JSON5.parse(_jsonStr))
jsonpath
JSONPathを使用してJavaScriptオブジェクトをクエリおよび操作する
var cities = [
{ name: "London", "population": 8615246 },
{ name: "Berlin", "population": 3517424 },
{ name: "Madrid", "population": 3165235 },
{ name: "Rome", "population": 2870528 }
];
var names = jsonpath.query(cities, '$..name');
console.log(names)
// [ "London", "Berlin", "Madrid", "Rome" ]
x2js
XMLとJavaScriptオブジェクト間の変換
xml2Json()
XMLからJSONへのメソッド、例:
let xml =
Tove
Jani
Reminder
Don't forget me this weekend!;
let json = xml2Json(xml);
console.log(json);
// Returns
// {
// "note": {
// "to": "Tove",
// "from": "Jani",
// "heading": "Reminder",
// "body": "Don't forget me this weekend!"
// }
// }
chai
BDD / TDDアサーションライブラリ
moment
日付処理ライブラリ(ロケールなし)
dayjs
日付と時刻を扱うための軽量なJavaScriptライブラリ
JSEncrypt
OpenSSL RSAの暗号化、復号化、およびキー生成を実行するためのJavaScriptライブラリです。
Usage Documentation
(Documentation backup link)
//rsa暗号化
var encryptor = new JSEncrypt() // 暗号化オブジェクトのインスタンスを作成します
//SSLで生成された公開鍵です。コピーする際にはスペースを含めないでください
var pubKey = '-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1QQRl0HlrVv6kGqhgonD6A9SU6ZJpnEN+Q0blT/ue6Ndt97WRfxtSAs0QoquTreaDtfC4RRX4o+CU6BTuHLUm+eSvxZS9TzbwoYZq7ObbQAZAY+SYDgAA5PHf1wNN20dGMFFgVS/y0ZWvv1UNa2laEz0I8Vmr5ZlzIn88GkmSiQIDAQAB-----END PUBLIC KEY-----'
encryptor.setPublicKey(pubKey)//公開鍵を設定します
var rsaPassWord = encryptor.encrypt('暗号化する内容') // コンテンツを暗号化します
//rsa decryption
var decrypt = new JSEncrypt()// Create a decryption object instance
//SSLで生成されたプライベートキー
var priKey = '-----BEGIN RSA PRIVATE KEY-----MIICXAIBAAKBgQC1QQRl0HlrVv6kGqhgonD6A9SU6ZJpnEN+Q0blT/ue6Ndt97WRfxtSAs0QoquTreaDtfC4RRX4o+CU6BTuHLUm+eSvxZS9TzbwoYZq7ObbQAZAY+SYDgAA5PHf1wNN20dGMFFgVS/y0ZWvv1UNa2laEz0I8Vmr5ZlzIn88GkmSiQIDAQABAoGBAKYDKP4AFlXkVlMEP5hS8FtuSrUhwgKNJ5xsDnFV8sc3yKlmKp1a6DETc7N66t/Wdb3JVPPSAy+7GaYJc7IsBRZgVqhrjiYiTO3ZvJv3nwAT5snCoZrDqlFzNhR8zvUiyAfGD1pExBKLZKNH826dpfoKD2fYlBVOjz6i6dTKBvCJAkEA/GtL6q1JgGhGLOUenFveqOHJKUydBAk/3jLZksQqIaVxoB+jRQNOZjeSO9er0fxgI2kh0NnfXEvH+v326WxjBwJBALfTRar040v71GJq1m8eFxADIiPDNh5JD2yb71FtYzH9J5/d8SUHI/CUFoROOhxr3DpagmrnTn28H0088vubKe8CQDKMOhOwx/tS5lqvN0YQj7I6JNKEaR0ZzRRuEmv1pIpAW1S5gTScyOJnVn1tXxcZ9xagQwlT2ArfkhiNKxjrf5kCQAwBSDN5+r4jnCMxRv/Kv0bUbY5YWVhw/QjixiZTNn81QTk3jWAVr0su4KmTUkg44xEMiCfjI0Ui3Ah3SocUAxECQAmHCjy8WPjhJN8y0MXSX05OyPTtysrdFzm1pwZNm/tWnhW7GvYQpvE/iAcNrNNb5k17fCImJLH5gbdvJJmCWRk=-----END RSA PRIVATE KEY----'
decrypt.setPrivateKey(priKey)//キーを設定します。
var uncrypted = decrypt.decrypt(encrypted)//復号化前に公開鍵で暗号化されたコンテンツを復号化します。
sm-crypto
JavaScriptバージョン。sm2、sm3、sm4の暗号化および復号化をサポートしています。
sm2
キーペアを取得する
let keypair = sm2.generateKeyPairHex()
publicKey = keypair.publicKey // Public Key
privateKey = keypair.privateKey // Private Key
// Generating a public key with 130 bits is too long, compressing it down to 66 bits is possible.
const compressedPublicKey = sm2.compressPublicKeyHex(publicKey) // compressedPublicKey is equivalent to publicKey.
sm2.comparePublicKeyHex(publicKey, compressedPublicKey) //Determining the equivalence of public keys.
// Custom random number, the parameters will be directly passed to the BigInteger constructor of the jsbn library.
// Note: Developers using custom random numbers need to ensure that the random numbers provided meet cryptographic security standards.
let keypair2 = sm2.generateKeyPairHex('123123123123123')
let keypair3 = sm2.generateKeyPairHex(256, SecureRandom)
let verifyResult = sm2.verifyPublicKey(publicKey) // Validate Public Key
verifyResult = sm2.verifyPublicKey(compressedPublicKey) // Validate Public Key
暗号化 復号化
const cipherMode = 1 // 1 - C1C3C2,0 - C1C2C3,default is 1.
let encryptData = sm2.doEncrypt(msgString, publicKey, cipherMode) // Encryption result
let decryptData = sm2.doDecrypt(encryptData, privateKey, cipherMode) // Decryption result
encryptData = sm2.doEncrypt(msgArray, publicKey, cipherMode) // Encryption result, input array
decryptData = sm2.doDecrypt(encryptData, privateKey, cipherMode, {output: 'array'}) // Decryption result, output array
署名の検証
注:理論的には、純粋な署名のみが最も高速です。
// Pure signature + generating elliptic curve points
let sigValueHex = sm2.doSignature(msg, privateKey) // Signature
let verifyResult = sm2.doVerifySignature(msg, sigValueHex, publicKey) // Verification Result
// Pure signature
let sigValueHex2 = sm2.doSignature(msg, privateKey, {
pointPool: [sm2.getPoint(), sm2.getPoint(), sm2.getPoint(), sm2.getPoint()], // Passing in pre-generated elliptic curve points can speed up the signing process.
}) // Signature
let verifyResult2 = sm2.doVerifySignature(msg, sigValueHex2, publicKey) // Verification Result
// Pure signature + generation of elliptic curve points + DER encoding/decoding
let sigValueHex3 = sm2.doSignature(msg, privateKey, {
der: true,
}) // Signature
let verifyResult3 = sm2.doVerifySignature(msg, sigValueHex3, publicKey, {
der: true,
}) // Verification Result
// Pure signature + Generate elliptic curve points + SM3 hashing
let sigValueHex4 = sm2.doSignature(msg, privateKey, {
hash: true,
}) // Signature
let verifyResult4 = sm2.doVerifySignature(msg, sigValueHex4, publicKey, {
hash: true,
}) // Verification Result
// Pure Signature + Generate Elliptic Curve Points + SM3 Hashing (without public key derivation)
let sigValueHex5 = sm2.doSignature(msg, privateKey, {
hash: true,
publicKey, // If the public key is passed in, the process of deriving the public key in SM3 hashing can be omitted, which makes it faster than just a pure signature combined with generating elliptic curve points and SM3 hashing.
})
let verifyResult5 = sm2.doVerifySignature(msg, sigValueHex5, publicKey, {
hash: true,
publicKey,
})
// Pure Signature + Generate Elliptic Curve Points + SM3 Hashing + No Public Key Derivation + Add User ID (length less than 8192)
// The default User ID value is 1234567812345678.
let sigValueHex6 = sm2.doSignature(msgString, privateKey, {
hash: true,
publicKey,
userId: 'testUserId',
})
let verifyResult6 = sm2.doVerifySignature(msgString, sigValueHex6, publicKey, {
hash: true,
userId: 'testUserId',
})
楕円曲線ポイントの取得
let point = sm2.getPoint() // Obtain an Elliptic Curve Point, which can be passed in during SM2 Signing.
sm3
let hashData = sm3('abc') // Hashing
// hmac
hashData = sm3('abc', {
key: 'daac25c1512fe50f79b0e4526b93f5c0e1460cef40b6dd44af13caec62e8c60e0d885f3c6d6fb51e530889e6fd4ac743a6d332e68a0f2a3923f42585dceb93e9', // Required to be a hexadecimal string or a byte array.
})
sm4
暗号化
const msg = 'hello world! I'm juneandgreen.' // Can be a UTF-8 string or a byte array.
const key = '0123456789abcdeffedcba9876543210' // Can be a hexadecimal string or a byte array, required to be 128 bits.
let encryptData = sm4.encrypt(msg, key) // Encryption, default output is a hexadecimal string, default padding is PKCS#7 (passing PKCS#5 will also use PKCS#7 padding).
let encryptData = sm4.encrypt(msg, key, {padding: 'none'}) // Encryption, without padding.
let encryptData = sm4.encrypt(msg, key, {padding: 'none', output: 'array'}) // Encryption, no padding, output as a byte array.
let encryptData = sm4.encrypt(msg, key, {mode: 'cbc', iv: 'fedcba98765432100123456789abcdef'}) // Encryption, CBC (Cipher Block Chaining) mode.
復号化
const encryptData = '0e395deb10f6e8a17e17823e1fd9bd98a1bff1df508b5b8a1efb79ec633d1bb129432ac1b74972dbe97bab04f024e89c' // Can be a hexadecimal string or byte array
const key = '0123456789abcdeffedcba9876543210' // Can be a hexadecimal string or byte array, required to be 128 bits
let decryptData = sm4.decrypt(encryptData, key) // Decrypt, default output is a UTF-8 string, default padding is PKCS#7 (passing PKCS#5 will also use PKCS#7 padding)
let decryptData = sm4.decrypt(encryptData, key, {padding: 'none'}) // Decrypt, no padding
let decryptData = sm4.decrypt(encryptData, key, {padding: 'none', output: 'array'}) // Decrypt, no padding, output as a byte array
let decryptData = sm4.decrypt(encryptData, key, {mode: 'cbc', iv: 'fedcba98765432100123456789abcdef'}) // Decrypt, CBC mode
$.md5()
MD5暗号化文字列を生成するための簡単な関数、例:
let md5Str = $.md5(123456);
console.log(md5Str) // 487f7b22f68312d2c1bbc93b1aea445b
sleep()
遅延関数、例:
console.log(1)
sleep(2000)
console.log(2) // Will output after a delay of 2000 milliseconds.
console
Consoleの出力例:
console.log(123) // Outputs 123 to the EchoAPI console
validCookie
指定されたURLに対して指定されたクッキーが有効かどうかを確認します。
const cookie1 = {
name: 'foo',
value: 'bar',
path: '/site',
expires: new Date('Tue Jul 01 2025 06:01:11 GMT-0400 (EDT)'),
maxAge: 1000,
domain: '.example.com',
secure: true,
httpOnly: true,
sameSite: 'lax'
},
cookie2 = {
name: 'foo',
value: 'bar',
path: '/site',
expires: new Date('Tue Jul 01 1979 06:01:11 GMT-0400 (EDT)'),
maxAge: 1000,
domain: '.example.com',
secure: true,
httpOnly: true,
sameSite: 'lax'
},
cookie3 = {
name: 'foo',
value: 'bar',
path: '/site',
expires: new Date('Tue Jul 01 2025 06:01:11 GMT-0400 (EDT)'),
maxAge: 1000,
domain: '.not-example.com',
secure: true,
httpOnly: true,
sameSite: 'lax'
},
cookie4 = {
name: 'foo',
value: 'bar',
path: '/no-site',
expires: new Date('Tue Jul 01 2025 06:01:11 GMT-0400 (EDT)'),
maxAge: 1000,
domain: '.not-example.com',
secure: true,
httpOnly: true,
sameSite: 'lax'
};
validCookie.isvalid('https://www.example.com/site', cookie1) //Meets the requirements, returns
/*
{
"cookie": "foo=bar",
"set-cookie": "foo=bar; Max-Age=1000; Domain=www.example.com; Path=/site/; Expires=Tue, 01 Jul 2025 10:01:11 GMT; HttpOnly; Secure; SameSite=Lax"
}
*/
validCookie.isvalid('https://www.example.com/site', cookie2) //Does not meet the requirements, returns false.
validCookie.isvalid('https://www.example.com/site', cookie3) //Does not meet the requirements, returns false.
validCookie.isvalid('https://www.example.com/site', cookie4) //Does not meet the requirements, returns false.
urlJoin
すべてのパラメータを結合してURLを返し、標準化します。
const fullUrl = urlJoin('http://www.google.com', 'a', '/b/cd', '?foo=123');
console.log(fullUrl);
aTools
ユーティリティツールキット。
let json='{"name":"I am an EchoAPI user"}';
let email='echoapi@gmail.com';
aTools.isJson(json); //真
aTools.isEmail(email); //真
//現在サポートされているもの:
array2Tree //フラットデータをツリー構造に変換
beautifyRaw //データを美化、現在はオブジェクト、xml、html、jsonp、javascriptをサポート。結果はモード(タイプ)と値(美化された結果)を含むオブジェクト
formatXml //XMLデータをフォーマット
getUrlQuery //URL内のクエリデータを取得(オブジェクト)。
getUrlQueryArray //URL内のクエ��データを取得(配列)。
isEmail //メール形式を検証
isXml //XML形式かどうかを確認
isJson //JSON形式かどうかを確認
isJson5 //JSON5形式かどうかを確認
isJsonp //JSONP形式かどうかを確認
isHtml //HTML形式かどうかを確認
ms2second //ミリのタイムスタンプを秒のタイムスタンプに変換
formatHtml //HTMLデータをフォーマット
jsonp2Obj //JSONP形式をオブジェクトに変換
errorResult //統一されたエラー結果オブジェクト
successResult //統一された成功結果オブジェクト
bufferToRaw //バッファを生データに変換
completionHttpProtocol //HTTPプロトコルヘッダーを完成させる
NewURL //URLに基づいてURLオブジェクトを生成
組み込みライブラリをrequire/importで参照する必要はありません。直接使用できます!