API 服务 - 压缩模式

API 服务 - 压缩模式

此页面是 压缩模式 对应的 API 说明,你可以查看 索引 来寻找需要的 API。

Compression Mode For English Version Is Here
Index For English Version Is Here

压缩

  • 压缩类 API 请求的前缀为 http://api.forec.cn/compress,你可以使用 GET 或 POST 方式传递数据。
  • 此模式目前可以提供如下类型压缩格式:
    • gzip
    • bzip2
    • zlib
    • base32
    • base64
  • 服务器将对针对你的请求返回 JSON 格式的数据,包含两个字段:Code 说明了你的请求是否合法以及返回值是否正确,Result 字段为服务器针对你的数据返回的压缩/解压结果。其中 Code 可为如下四种指令字:
    • 200:成功解压,返回值正确
    • 300:成功压缩,返回值正确
    • 400:你的请求所包含的数据不合法
    • 500:服务器内部错误
  • 压缩类请求均需要指定至少两个字段:
    • method=压缩格式:指定 method 来告知服务器你要使用的压缩格式
    • plain=待压缩文本:此字段放置你要压缩的字节串
    • cipher=待解压文本:此字段放置你要解压的字节串
    • plaincipher 字段不应同时被指定,否则服务器会默认忽视 cipher 字段
  • 注意,因为服务器会自动使用 UTF-8 格式为 JSON 数据编码,故接收到的结果需要使用 UTF-8 格式解码。
  • 对于 GZIP 格式和 ZLIB 格式,你可以制定一个额外的选项 level 来改变压缩等级:
    • level 应当是一个 1 到 9 之间的整数,数值越大则压缩质量越高
    • level 可以为 0,此时服务器将不会压缩数据,并将原数据放到 Result 字段返回
    • level 可以为 -1,如果你不指定 level 字段,服务器会默认将其置为 -1。通常情况下 -1 也会使用最高级别的压缩质量。

GZIP 格式

  • 你需要指定 method 类型为 gzipGZIP
  • 因为我们的测试字段过短(”test”),因此压缩后的主体没有区别,但可以看出两个样例头部的不同(\u0000\u0004)区分了压缩质量。
  • 样例:
1
2
3
4
5
6
> curl http://api.forec.cn/compress?method=gzip&plain=test
{"code":300,"result":"\u001f\ufffd\u0008\u0000\u0000\tn
\ufffd\u0000\ufffd*I-.\u0001\u0000\u0000\u0000\ufffd\ufffd"}

> curl http://api.forec.cn/compress?method=gzip&plain=test&level=1
{"code":300,"result":"\u001f\ufffd\u0008\u0000\u0000\tn
\ufffd\u0004\ufffd*I-.\u0001\u0000\u0000\u0000\ufffd\ufffd"}

BZIP2

  • 你需要指定 method 类型为 zlibZLIB
  • 在 BZIP2 模式中,level 如果被设置为小于 0 或高于 9 的值,则将自动被转换为 9(质量最高)。
  • 样例:
1
2
3
4
5
6
> curl http://api.forec.cn/compress?method=bzip2&plain=test
{"code":300,"result":"BZh91AY\u0026SY3\ufffdϬ\u0000\u0000\u0001
\u0001\ufffd\u0002\u0000\u000c\u0000 \u0000 \ufffd{P5\u001e\ufffdz"}

> curl http://api.forec.cn/compress?method=bzip2&plain=test&level=1
{"code":300,"result":"BZh11AY\u0026SY3\ufffdϬ\u0000\u0000\u0001
\u0001\ufffd\u0002\u0000\u000c\u0000 \u0000 \ufffd{P5\u001e\ufffdz"}

ZLIB 格式

  • 你需要指定 method 类型为 zlibZLIB
  • 样例:
1
2
3
4
> curl http://api.forec.cn/compress?method=zlib&plain=test
{"code":300,"result":"x\ufffd*I-.\u0001\u0004\u0000\u0000\ufffd\ufffd\u0004]\u0001\ufffd"}
> curl http://api.forec.cn/compress?method=zlib&plain=test&level=1
{"code":300,"result":"x\u0001*I-.\u0001\u0004\u0000\u0000\ufffd\ufffd\u0004]\u0001\ufffd"}

BASE32 格式

  • 你需要指定 method 类型为 base32BASE32
  • 样例:
1
2
3
4
> curl http://api.forec.cn/compress?method=base32&plain=test
{"code":300,"result":"ORSXG5A="}
> curl http://api.forec.cn/compress?method=base32&cipher=ORSXG5A=
{"code":200,"result":"test"}

BASE64 格式

  • 你需要指定 method 类型为 base64BASE64
  • 样例:
1
2
3
4
> curl http://api.forec.cn/compress?method=base64&plain=test
{"code":300,"result":"dGVzdA=="}
> curl http://api.forec.cn/compress?method=base64&cipher=dGVzdA==
{"code":200,"result":"test"}
分享到