116 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
# API 接口
 | 
						||
 | 
						||
API 接口配置提供了一些基于 [gRPC](https://grpc.io/)的 API 接口供远程调用。
 | 
						||
 | 
						||
可以通过 api 配置模块开启接口. 当 api 配置开启时,Xray 会自建一个出站代理,须手动将所有的 API 入站连接通过 [路由规则配置](./routing.md) 指向这一出站代理。
 | 
						||
 | 
						||
请参考本节中的 [相关配置](#相关配置)
 | 
						||
 | 
						||
::: warning
 | 
						||
大多数用户并不会用到此 API,新手可以直接忽略这一项。
 | 
						||
:::
 | 
						||
 | 
						||
## ApiObject
 | 
						||
 | 
						||
`ApiObject` 对应配置文件的 `api` 项。
 | 
						||
 | 
						||
```json
 | 
						||
{
 | 
						||
  "api": {
 | 
						||
    "tag": "api",
 | 
						||
    "services": ["HandlerService", "LoggerService", "StatsService"]
 | 
						||
  }
 | 
						||
}
 | 
						||
```
 | 
						||
 | 
						||
> `tag`: string
 | 
						||
 | 
						||
出站代理标识。
 | 
						||
 | 
						||
> `services`: \[string\]
 | 
						||
 | 
						||
开启的 API 列表,可选的值见 [API 列表](#支持的-api-列表)。
 | 
						||
 | 
						||
## 相关配置
 | 
						||
 | 
						||
可以在 inbounds 配置中增加一个 api 的 inbound
 | 
						||
 | 
						||
```json
 | 
						||
"inbounds": [
 | 
						||
  {
 | 
						||
    "listen": "127.0.0.1",
 | 
						||
    "port": 10085,
 | 
						||
    "protocol": "dokodemo-door",
 | 
						||
    "settings": {
 | 
						||
      "address": "127.0.0.1"
 | 
						||
    },
 | 
						||
    "tag": "api"
 | 
						||
  }
 | 
						||
]
 | 
						||
```
 | 
						||
 | 
						||
在路由配置中增加针对 api inbound 的路由规则
 | 
						||
 | 
						||
```json
 | 
						||
"routing": {
 | 
						||
  "rules": [
 | 
						||
    {
 | 
						||
      "inboundTag": [
 | 
						||
        "api"
 | 
						||
      ],
 | 
						||
      "outboundTag": "api",
 | 
						||
      "type": "field"
 | 
						||
    }
 | 
						||
  ]
 | 
						||
}
 | 
						||
```
 | 
						||
 | 
						||
在基础配置中增加 api
 | 
						||
 | 
						||
```json
 | 
						||
"api": {
 | 
						||
  "tag": "api",
 | 
						||
  "services": [
 | 
						||
    "StatsService"
 | 
						||
  ]
 | 
						||
}
 | 
						||
```
 | 
						||
 | 
						||
## 支持的 API 列表
 | 
						||
 | 
						||
### HandlerService
 | 
						||
 | 
						||
一些对于入站出站代理进行修改的 API,可用的功能如下:
 | 
						||
 | 
						||
- 添加一个新的入站代理;
 | 
						||
- 添加一个新的出站代理;
 | 
						||
- 删除一个现有的入站代理;
 | 
						||
- 删除一个现有的出站代理;
 | 
						||
- 在一个入站代理中添加一个用户(仅支持 VMess、VLESS、Trojan、Shadowsocks(v1.3.0+));
 | 
						||
- 在一个入站代理中删除一个用户(仅支持 VMess、VLESS、Trojan、Shadowsocks(v1.3.0+));
 | 
						||
 | 
						||
### LoggerService
 | 
						||
 | 
						||
支持对内置 Logger 的重启,可配合 logrotate 进行一些对日志文件的操作。
 | 
						||
 | 
						||
### StatsService
 | 
						||
 | 
						||
内置的数据统计服务,详见 [统计信息](./stats.md)。
 | 
						||
 | 
						||
### ReflectionService
 | 
						||
 | 
						||
支持 gRPC 客户端获取服务端的 API 列表。
 | 
						||
 | 
						||
```bash
 | 
						||
$ grpcurl -plaintext localhost:10085 list
 | 
						||
grpc.reflection.v1alpha.ServerReflection
 | 
						||
v2ray.core.app.proxyman.command.HandlerService
 | 
						||
v2ray.core.app.stats.command.StatsService
 | 
						||
xray.app.proxyman.command.HandlerService
 | 
						||
xray.app.stats.command.StatsService
 | 
						||
```
 | 
						||
 | 
						||
## API 调用示例
 | 
						||
 | 
						||
[Xray-API-documents](https://github.com/XTLS/Xray-API-documents) @crossfw
 |