- 版权类型
- 原创
- 版权链接
- #
- 语言支持
- 中文(简体)
- 前置组件
- LegacyScriptEngine
https://github.com/LiteLDev/LegacyScriptEngine
- 适配版本(基岩)
- 1.21
- 1.20
[MD]
# 安装
LL3 先安装 LSE
下载 `LeviHTTPApi_xxx.zip`
LL3 把 zip 解压到 `plugins/` 下
LL2 把 zip 中的 `LeviHTTPApi.js` 解压到 `plugins/` 下
# 使用
```
GET /PATH/接口?key=ApiKey&...
示例: http://xxx.com/api/players?key=test
http://xxx.com/api/player_info?key=test&player=Notch
```
## 配置文件
路径: `plugins/LeviHTTPApi/config.json`
### 示例:
```JSON
{
"port": 22222,
"key": {
"a94a8fe5ccb19ba61c4c0873d391e987982fbbd3": {
"denies": ["runcmd", "runjs", "shell"]
}
},
"path": "api",
"logto_console": false,
"logto_file": true
}
```
### 说明
- **`port`**: 端口,默认 22222
_int_
- **`key`**: API请求密钥及规则,下面详细说明
_Object_
- **`path`**: 请求根路径,示例请求: xxx.com/api/players,默认 api
_String_
- **`logto_console`**: 请求日志输出到控制台,不推荐开启,默认 false
_bool_
- **`logto_file`**: 请求日志输出到文件 `plugins/LeviHTTPApi/logs/`,默认 true
_bool_
#### ApiKey 说明
apikey 实时生效
键 key 是一个 sha-1 字符串,值为 _Object_,说明在下面
请求时使用**明文**的key请求,配置文件内填写key经过**sha-1加密后的密文**
**key 对应的值的内容**
- **`allows`**: 允许的接口,当 allows 存在时,仅 allows 内的接口可请求
_Array: String_
- **`denies`**: 禁用的接口
_Array: String_
**注意:** 如果 allows 不存在,则所有接口都可以请求
## 命令
**命令只能控制台(后台)执行**
格式: `/levihttpapi <action> [value]` 或 `/httpapi <action> [value]`
### action 说明
- **`start`**: 启动 HTTP 服务器
- **`stop`**: 关闭 HTTP 服务器
- **`restart`**: 重启 HTTP 服务器(重新加载配置)
- **`genkey`**: 根据传入的原始字符串生成一个sha-1加密后的key,将**加密后的key**填进配置文件,再用**加密前的key**请求接口
## 接口列表
| 接口 | 参数 | 返回类型 | 说明 |
| --- | --- | --- | --- |
| onlines | / | int | 获取在线人数 |
| players | / | Array: String | 获取在线的玩家 |
| player_info | player: 玩家名 | Object | 获取玩家信息,玩家名支持模糊搜索 |
| plugins | / | Array: String | 获取插件列表 |
| plugin_info | plugin: 插件名 | Object | 获取插件信息 |
| runcmd | cmd: 命令 | Object | 执行后台指令 |
| runjs | js: JS 代码 | any | 执行 JS |
| server_info | / | Object | 获取服务器信息 |
| set_maxplayers | max: 最大玩家数(最多40) | bool | 设置最大玩家数 |
| set_motd | motd: MOTD 字符串 | bool | 设置服务器名 |
| shell | cmd: 命令 | bool | 执行 Windows 命令 |
| stop_server | / | String | 关闭服务器 |
### 请求和返回格式
**请求**
```
GET http://ip:端口/path/接口?key=apikey&参数...
示例:
http://xxx.com:22222/api/players?key=test
http://xxx.com:22222/api/player_info?key=test&player=HetNucha
```
**返回**
1.
```JSON
{
"code": 200,
"data": ["HetNucha", "Notch"]
}
```
2.
```JSON
{
"code": 200,
"data": {
"name": "HetNucha",
"xuid": "253XXXXXXXXXXXXX",
"uuid": "fbXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX",
"position": [
-463.7032165527344,
64,
-1012.9279174804688,
0
],
"health": 20,
"max_health": 20,
"level": 23,
"gamemode": 1,
"permission": 1,
"os": "Android",
"connection": "xxx.com:19132"
}
}
```
**错误请求的返回结果示例**
```JSON
{
"code": 403,
"data": "未知的接口 xxx, 请检查接口是否存在,以及是否拥有请求权限"
}
```
[/MD]
# 安装
LL3 先安装 LSE
下载 `LeviHTTPApi_xxx.zip`
LL3 把 zip 解压到 `plugins/` 下
LL2 把 zip 中的 `LeviHTTPApi.js` 解压到 `plugins/` 下
# 使用
```
GET /PATH/接口?key=ApiKey&...
示例: http://xxx.com/api/players?key=test
http://xxx.com/api/player_info?key=test&player=Notch
```
## 配置文件
路径: `plugins/LeviHTTPApi/config.json`
### 示例:
```JSON
{
"port": 22222,
"key": {
"a94a8fe5ccb19ba61c4c0873d391e987982fbbd3": {
"denies": ["runcmd", "runjs", "shell"]
}
},
"path": "api",
"logto_console": false,
"logto_file": true
}
```
### 说明
- **`port`**: 端口,默认 22222
_int_
- **`key`**: API请求密钥及规则,下面详细说明
_Object_
- **`path`**: 请求根路径,示例请求: xxx.com/api/players,默认 api
_String_
- **`logto_console`**: 请求日志输出到控制台,不推荐开启,默认 false
_bool_
- **`logto_file`**: 请求日志输出到文件 `plugins/LeviHTTPApi/logs/`,默认 true
_bool_
#### ApiKey 说明
apikey 实时生效
键 key 是一个 sha-1 字符串,值为 _Object_,说明在下面
请求时使用**明文**的key请求,配置文件内填写key经过**sha-1加密后的密文**
**key 对应的值的内容**
- **`allows`**: 允许的接口,当 allows 存在时,仅 allows 内的接口可请求
_Array: String_
- **`denies`**: 禁用的接口
_Array: String_
**注意:** 如果 allows 不存在,则所有接口都可以请求
## 命令
**命令只能控制台(后台)执行**
格式: `/levihttpapi <action> [value]` 或 `/httpapi <action> [value]`
### action 说明
- **`start`**: 启动 HTTP 服务器
- **`stop`**: 关闭 HTTP 服务器
- **`restart`**: 重启 HTTP 服务器(重新加载配置)
- **`genkey`**: 根据传入的原始字符串生成一个sha-1加密后的key,将**加密后的key**填进配置文件,再用**加密前的key**请求接口
## 接口列表
| 接口 | 参数 | 返回类型 | 说明 |
| --- | --- | --- | --- |
| onlines | / | int | 获取在线人数 |
| players | / | Array: String | 获取在线的玩家 |
| player_info | player: 玩家名 | Object | 获取玩家信息,玩家名支持模糊搜索 |
| plugins | / | Array: String | 获取插件列表 |
| plugin_info | plugin: 插件名 | Object | 获取插件信息 |
| runcmd | cmd: 命令 | Object | 执行后台指令 |
| runjs | js: JS 代码 | any | 执行 JS |
| server_info | / | Object | 获取服务器信息 |
| set_maxplayers | max: 最大玩家数(最多40) | bool | 设置最大玩家数 |
| set_motd | motd: MOTD 字符串 | bool | 设置服务器名 |
| shell | cmd: 命令 | bool | 执行 Windows 命令 |
| stop_server | / | String | 关闭服务器 |
### 请求和返回格式
**请求**
```
GET http://ip:端口/path/接口?key=apikey&参数...
示例:
http://xxx.com:22222/api/players?key=test
http://xxx.com:22222/api/player_info?key=test&player=HetNucha
```
**返回**
1.
```JSON
{
"code": 200,
"data": ["HetNucha", "Notch"]
}
```
2.
```JSON
{
"code": 200,
"data": {
"name": "HetNucha",
"xuid": "253XXXXXXXXXXXXX",
"uuid": "fbXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX",
"position": [
-463.7032165527344,
64,
-1012.9279174804688,
0
],
"health": 20,
"max_health": 20,
"level": 23,
"gamemode": 1,
"permission": 1,
"os": "Android",
"connection": "xxx.com:19132"
}
}
```
**错误请求的返回结果示例**
```JSON
{
"code": 403,
"data": "未知的接口 xxx, 请检查接口是否存在,以及是否拥有请求权限"
}
```
[/MD]