此页面是 压缩模式 对应的 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=待解压文本
:此字段放置你要解压的字节串
plain
和 cipher
字段不应同时被指定,否则服务器会默认忽视 cipher
字段
- 注意,因为服务器会自动使用 UTF-8 格式为 JSON 数据编码,故接收到的结果需要使用 UTF-8 格式解码。
- 对于 GZIP 格式和 ZLIB 格式,你可以制定一个额外的选项
level
来改变压缩等级:
level
应当是一个 1 到 9 之间的整数,数值越大则压缩质量越高
level
可以为 0,此时服务器将不会压缩数据,并将原数据放到 Result
字段返回
level
可以为 -1,如果你不指定 level
字段,服务器会默认将其置为 -1。通常情况下 -1 也会使用最高级别的压缩质量。
GZIP 格式
- 你需要指定
method
类型为 gzip
或 GZIP
。
- 因为我们的测试字段过短(”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
类型为 zlib
或 ZLIB
。
- 在 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
类型为 zlib
或 ZLIB
。
- 样例:
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
类型为 base32
或 BASE32
。
- 样例:
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
类型为 base64
或 BASE64
。
- 样例:
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"}
|