Files
2025-11-18 03:36:49 +08:00

374 lines
20 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# GoEdge API 文档
## 协议说明
理解proto3协议
服务和方法
以 Service 结尾的API成为服务比如 ServerService每个服务下有很多方法比如
createServer
updateServerBasic
updateServerGroupIds
在通过HTTP协议调用API时你需要组合服务和方法作为方法的地址
API接口地址/服务名/方法名
比如:
http://192.168.2.100/ServerService/createServer
接口参数解读
假设我们看到以下的接口参数定义:
// 创建服务
{
int64 userId;
int64 adminId;
string type;
string name;
string description;
// 配置相关
bytes serverNamesJSON;
bytes httpJSON;
bytes httpsJSON;
bytes tcpJSON;
bytes tlsJSON;
bytes unixJSON;
bytes udpJSON;
int64 webId;
bytes reverseProxyJSON;
[]int64 serverGroupIds;
int64 userPlanId;
}
其中:
每个字段定义都至少由两部分组成,最简单的定义为 字段类型 字段名,这里我们省略了字段编号;
int64和 string 等都是字段数据类型,目前支持以下常用的数据类型:
int64 - 64位整型
int32 - 32位整型
uint64 - 无符号的64位整型
uint32 - 无符号的32位整型
double - 双精度浮点数字
float - 单精度浮点数字
string - 字符串
bool - 布尔值在JSON中为 true 或者 false
bytes - 二进制字节数组通过JSON调用时你需要先将数据转换为Base64格式再传递到接口比如
一个字符串的内容为Hello, World那么传递到 bytes 类型字段的时候就需要传递 base64_encode('Hello, World'),最终值应该为 SGVsbG8sIFdvcmxk
一个JSON数据的内容为{ "name": "goedge.cloud", "type": "domain"},那么传递到 bytes 类型字段的时候就需要传递 base64_encode('{ "name": "goedge.cloud", "type": "domain"}'),最终值应该为 eyAibmFtZSI6ICJnb2VkZ2UuY24iLCAidHlwZSI6ICJkb21haW4ifQ==
一个文件内容的二进制内容同样也需要Base64编码处理
反之对于接口返回的响应数据来说你需要Base64 Decode处理才能得到原始数据
[]字段类型 字段名 表示一个数组,字段类型 部分表示字段值数组中的元素的类型,比如:
[]int64 serverGroupIds 表示 serverGroupIds 是一个数组通过JSON调用时需要传递[ 1, 2, 3 ]这样格式的数据,其中 int64 规定了数组中的每一项必须是一个整型;
[]string types 表示 types 的值为 [ "type1", "type2" ] 这样的数组
[]ServerGroup serverGroups 表示 serverGroups 的只为 [ serverGroup1, serverGroup2, serverGroup3 ] 这样的数组因为ServerGroup也是一个对象所以我们可以展开来最终的JSON为[ { "id":1, "name": "分组1" }, { "id":2, "name": "分组2" }, { "id":3, "name": "分组3" } ]
整体转换为JSON
通过JSON调用API时需要将proto3协议的数据转换为JSON。对于这个示例中和JSON的对应关系为
{
"userId": 35,
"adminId": 1,
"type": "httpProxy",
"name": "My site",
"description": "This is my site",
"serverNamesJSON": "ewogICJuYW1lIjogImdvZWRnZS5jbiIKfQ==",
"httpJSON": "...",
"httpsJSON": "...",
"tcpJSON": "...",
"tlsJSON": "...",
"unixJSON": "...",
"udpJSON": "...",
"webId": "...",
"reverseProxyJSON": "...",
"serverGroupIds": [1, 3, 5],
"userPlanId": 12
}
嵌套
JSON数据也支持嵌套
{
"name": "Site",
"addr": {
"protocol": "http",
"host": "example.com",
"portRange": "80"
}
}
空参数
有些接口参数定义为:
{
}
像这样的接口需要传递的JSON为
{}
即可。
字符集
GoEdge所有API都只支持UTF-8。
API调用概述
接口地址
如果你还没有HTTP接口地址可以先在API节点中添加一个请参考 API节点设置。
注意这里说的HTTP接口地址不是GRPC地址也不是管理系统地址。
如果想调用某个具体的方法,那么地址就是:
API接口地址/服务名/方法名
比如:
http://192.168.2.100/ServerService/createServer
调用方法
除了 /APIAccessTokenService/getAPIAccessToken 接口外,其他的所有接口都需要:
在HTTP Header中传递X-Edge-Access-Token令牌数据以便于我们认证用户是否有接口访问的权限此令牌通过 /APIAccessTokenService/getAPIAccessToken 接口获取,具体请参考 认证 一节。
所有请求数据需要以 POST 方法上传一个完整的JSON数据接口响应数据也是JSON数据
比如:
POST /HTTPAccessLogService/listHTTPAccessLogs
...
X-Edge-Access-Token: n8adDybtPCAGdbORkXjfpJgL28EGkOLz
...
{
"serverId": 23,
"day": "20210101",
"size": 100,
"reverse": true
}
可以在这里查看令牌获取方法。
CURL示例
curl -v -XPOST -H"X-Edge-Access-Token: hZFW3yg1geeKYqLPjhmi5OyAtYoKingiNoemNkqjLWIsCXJcmaHDaUL1ELX6vtPrjvwiXiTuBN9mAVK8cUhn6PpuN1eLYbtN1seAFMpf2h6aZtFgkhAxI3cYUSZIwLQg" "http://192.168.1.6:8004/HTTPAccessLogService/listHTTPAccessLogs" -d '{
"size":100,
"day":"20211217"
}'
你需要把IP地址、X-Edge-Access-Token换成你自己的。
格式化输出
可以在HTTP Header中增加 X-Edge-Response-Pretty: on 来让输出的JSON更加可读。
HTTP状态码
调用API后一定 要检查API响应的HTTP状态码注意是HTTP状态码不是JSON里面的code只有200才是响应成功以下是常见的几种响应状态码错误
400 - 错误的请求格式可能是发送的内容过大、或JSON数据格式错误
404 - API服务或方法不存在或错误的API路径
常见问题
调用API的时候提示 Received HTTP/0.9 when not allowed 是怎么回事?
你没有按照本文开头部分所说的添加HTTP接口地址请 点击这里 添加HTTP接口地址后再重试。
API认证
在调用API时需要通过令牌AccessToken对用户权限进行认证。
步骤1创建AccessKey
AccessKey分为两种一种是是用户AccessKey可以用来管理跟此用户相关的数据另外一种是管理员API可以管理所有管理员能操作的数据。
用户AccessKey
从v0.2.1开始如果你还没有用户AccessKey则需要在”平台用户” 用户”详情” “API AccessKey”中创建。
商业版的用户可以自行在用户平台”访问控制”页面中点击”创建AccessKey”然后创建一个AccessKey。
管理员AccessKey
从v0.2.3开始如果你还没有管理员AccessKey则需要在”系统用户” 用户”详情” “API AccessKey”中创建。
步骤2调用API获取AccessToken
接口地址
/APIAccessTokenService/getAPIAccessToken
请求方法
POST。
请求参数
{
"type": "admin",
"accessKeyId": "zr9cmR42AEZxRyIV",
"accessKey": "2w5p5NSZZuplUPsfPMzM7dFmTrI7xyja"
}
其中
type - 如果是用户即平台用户AccessKey则值为 user如果是管理员即系统用户AccessKey则值为 admin
accessKeyId 和 accessKey 换成你在步骤1中创建的AccessKey对应的数据。
响应结果
{
"code": 200,
"data": {
"token": "IKNSMufZ1vDiXp5rSd9QR01m1174Oum5sah4amWFgbRb7lOKjuk62Spl7hgcazctzGhGG7jPgfmYUPojulC0FK5cLbrj8n7kxW7BtSawH9gWW14IWOzBY6UcpyXQndFu",
"expiresAt": 1609686945
},
"message": "ok"
}
其中:
code - 如果是 200 表示成功,否则表示失败
token - 就是AccessToken可以在别的接口中通过HTTP Header X-Edge-Access-Token 传入;
expiresAt - 过期时间戳默认为N个小时过期后请及时重新获取。
多次调用此接口会导致先前获取的AccessToken失效。
CURL示例
对管理员来说可以使用curl命令调用接口获得Token
curl -XPOST "http://192.168.1.6:8004/APIAccessTokenService/getAPIAccessToken" -d '{
"type":"admin",
"accessKeyId":"zr9cmR42AEZxRyIV",
"accessKey":"2w5p5NSZZuplUPsfPMzM7dFmTrI7xyja"
}'
你需要把API地址、accessKeyId、accessKey换成你自己的。
对平台用户来说可以使用curl命令调用接口获得Token
curl -XPOST "http://192.168.1.6:8004/APIAccessTokenService/getAPIAccessToken" -d '{
"type":"user",
"accessKeyId":"JOvsyXIFqkQbh5kl",
"accessKey":"t0RY8YO3R58VbJJNp0RqKw9KWNpObwtE"
}'
你需要把API地址、accessKeyId、accessKey换成你自己的。
步骤3调用API
在 API列表 找到要调用的API然后以POST方式调用 /服务/方法 组合后的URL在Header中加入 X-Edge-Access-Token 值为步骤2中的生成的AccessToken接口具体可以参考 API调用概述 。
## API 服务列表
- [ACMEProviderAccountService](./ACMEProviderAccountService.md) — ACME服务商账号
- [ACMEProviderService](./ACMEProviderService.md) — ACME服务商
- [ACMETaskService](./ACMETaskService.md) — ACME任务相关服务
- [ACMEUserService](./ACMEUserService.md) — ACME用户相关服务
- [ADNetworkService](./ADNetworkService.md) — 高防线路服务
- [ADPackageInstanceService](./ADPackageInstanceService.md) — 高防实例服务
- [ADPackagePeriodService](./ADPackagePeriodService.md) — 高防实例有效期服务
- [ADPackagePriceService](./ADPackagePriceService.md) — 高防产品价格服务
- [ADPackageService](./ADPackageService.md) — 高防产品服务
- [APIMethodStatService](./APIMethodStatService.md) — API方法统计服务
- [APINodeService](./APINodeService.md) — API节点服务
- [AdminService](./AdminService.md) — 管理员服务
- [ClientAgentIPService](./ClientAgentIPService.md) — Agent IP服务
- [ClientAgentService](./ClientAgentService.md) — Agent服务
- [DBNodeService](./DBNodeService.md) — 数据库节点服务
- [DBService](./DBService.md) — 数据库相关服务
- [DNSDomainService](./DNSDomainService.md) — DNS域名相关
- [DNSProviderService](./DNSProviderService.md) — DNS服务商相关服务
- [DNSService](./DNSService.md) — 域名解析服务
- [DNSTaskService](./DNSTaskService.md) — DNS同步相关任务
- [FileChunkService](./FileChunkService.md) — 文件片段相关服务
- [FileService](./FileService.md) — 文件相关服务
- [FirewallService](./FirewallService.md) — 防火墙全局服务
- [FormalClientBrowserService](./FormalClientBrowserService.md) — 浏览器信息库服务
- [FormalClientSystemService](./FormalClientSystemService.md) — 操作系统信息库服务
- [HTTPAccessLogPolicyService](./HTTPAccessLogPolicyService.md) — 访问日志策略服务
- [HTTPAccessLogService](./HTTPAccessLogService.md) — 访问日志相关服务
- [HTTPAuthPolicyService](./HTTPAuthPolicyService.md) — 服务认证策略服务
- [HTTPCachePolicyService](./HTTPCachePolicyService.md) — 缓存策略服务
- [HTTPCacheTaskKeyService](./HTTPCacheTaskKeyService.md) — 缓存任务Key管理
- [HTTPCacheTaskService](./HTTPCacheTaskService.md) — 缓存任务管理
- [HTTPFastcgiService](./HTTPFastcgiService.md) — Fastcgi服务
- [HTTPFirewallPolicyService](./HTTPFirewallPolicyService.md) — HTTP防火墙WAF服务
- [HTTPFirewallRuleGroupService](./HTTPFirewallRuleGroupService.md) — WAF分组服务
- [HTTPFirewallRuleSetService](./HTTPFirewallRuleSetService.md) — WAF规则集服务
- [HTTPHeaderPolicyService](./HTTPHeaderPolicyService.md) — HTTP Header策略服务
- [HTTPHeaderService](./HTTPHeaderService.md) — HTTP Header管理服务
- [HTTPLocationService](./HTTPLocationService.md) — 路由规则服务
- [HTTPPageService](./HTTPPageService.md) — 自定义页面服务
- [HTTPRewriteRuleService](./HTTPRewriteRuleService.md) — 重写规则服务
- [HTTPWebService](./HTTPWebService.md) — HTTP Web相关管理服务
- [HTTPWebsocketService](./HTTPWebsocketService.md) — HTTP Websocket管理服务
- [IPItemService](./IPItemService.md) — IP条目管理
- [IPLibraryArtifactService](./IPLibraryArtifactService.md) — IP库制品
- [IPLibraryFileService](./IPLibraryFileService.md) — IP库文件管理
- [IPLibraryService](./IPLibraryService.md) — IP库
- [IPListService](./IPListService.md) — IP列表
- [LatestItemService](./LatestItemService.md) — 最近使用的条目服务
- [LogService](./LogService.md) — 审计日志服务
- [LoginService](./LoginService.md) — 认证相关服务
- [LoginSessionService](./LoginSessionService.md) — 登录SESSION服务
- [LoginTicketService](./LoginTicketService.md) — 登录票据相关服务
- [MessageMediaInstanceService](./MessageMediaInstanceService.md) — 消息媒介实例
- [MessageMediaService](./MessageMediaService.md) — 消息媒介管理
- [MessageReceiverService](./MessageReceiverService.md) — 消息对象接收者设置
- [MessageRecipientGroupService](./MessageRecipientGroupService.md) — 消息接收人分组
- [MessageRecipientService](./MessageRecipientService.md) — 消息接收人
- [MessageService](./MessageService.md) — 消息相关服务
- [MessageTaskLogService](./MessageTaskLogService.md) — 消息发送任务日志
- [MessageTaskService](./MessageTaskService.md) — 消息发送任务服务
- [MetricChartService](./MetricChartService.md) — 指标图表相关服务
- [MetricItemService](./MetricItemService.md) — 指标相关服务
- [MetricStatService](./MetricStatService.md) — 指标统计数据相关服务
- [NSAccessLogService](./NSAccessLogService.md) — 访问日志相关服务
- [NSClusterService](./NSClusterService.md) — 域名服务集群相关服务
- [NSDomainGroupService](./NSDomainGroupService.md) — 域名分组服务
- [NSDomainService](./NSDomainService.md) — 域名相关服务
- [NSKeyService](./NSKeyService.md) — NS密钥相关服务
- [NSNodeService](./NSNodeService.md) — 域名服务器节点服务
- [NSPlanService](./NSPlanService.md) — DNS套餐服务
- [NSQuestionOptionService](./NSQuestionOptionService.md) — DNS查询选项
- [NSRecordHourlyStatService](./NSRecordHourlyStatService.md) — NS记录小时统计
- [NSRecordService](./NSRecordService.md) — 域名记录相关服务
- [NSRouteCategoryService](./NSRouteCategoryService.md) — 线路分类服务
- [NSRouteService](./NSRouteService.md) — 线路相关服务
- [NSService](./NSService.md) — 域名服务
- [NSUserPlanService](./NSUserPlanService.md) — 用户DNS套餐服务
- [NodeActionService](./NodeActionService.md) — 节点动作服务
- [NodeClusterFirewallActionService](./NodeClusterFirewallActionService.md) — 防火墙动作服务
- [NodeClusterMetricItemService](./NodeClusterMetricItemService.md) — 集群指标
- [NodeClusterService](./NodeClusterService.md) — 边缘节点集群管理服务
- [NodeGrantService](./NodeGrantService.md) — 节点认证信息管理服务
- [NodeGroupService](./NodeGroupService.md) — 节点分组服务
- [NodeIPAddressLogService](./NodeIPAddressLogService.md) — IP地址相关日志
- [NodeIPAddressService](./NodeIPAddressService.md) — 节点IP地址服务
- [NodeIPAddressThresholdService](./NodeIPAddressThresholdService.md) — IP阈值相关服务
- [NodeLogService](./NodeLogService.md) — 节点日志相关服务
- [NodeLoginService](./NodeLoginService.md) — 节点登录相关
- [NodePriceItemService](./NodePriceItemService.md) — 节点区域定价相关服务
- [NodeRegionService](./NodeRegionService.md) — 节点区域相关服务
- [NodeService](./NodeService.md) — 边缘节点管理服务
- [NodeTaskService](./NodeTaskService.md) — 节点同步任务相关服务
- [NodeThresholdService](./NodeThresholdService.md) — 节点阈值服务
- [NodeValueService](./NodeValueService.md) — 节点指标数据服务
- [OrderMethodService](./OrderMethodService.md) — 订单支付方式相关服务
- [OriginService](./OriginService.md) — 源站管理服务
- [PagesService](./PagesService.md) — Pages相关服务
- [PagesStorageService](./PagesStorageService.md) — PagesStorage相关服务
- [PlanService](./PlanService.md) — 套餐相关服务
- [PostCategoryService](./PostCategoryService.md) — 文章分类管理服务
- [PostService](./PostService.md) — 文章管理服务
- [PriceService](./PriceService.md) — 价格相关服务
- [RegionCityService](./RegionCityService.md) — 城市相关服务
- [RegionCountryService](./RegionCountryService.md) — 国家/地区相关服务
- [RegionProviderService](./RegionProviderService.md) — ISP相关服务
- [RegionProvinceService](./RegionProvinceService.md) — 省份相关服务
- [RegionTownService](./RegionTownService.md) — 区县相关服务
- [ReportNodeGroupService](./ReportNodeGroupService.md) — 监控节点分组
- [ReportNodeService](./ReportNodeService.md) — 监控终端服务
- [ReportResultService](./ReportResultService.md) — 区域监控报告结果
- [ReverseProxyService](./ReverseProxyService.md) — 反向代理管理服务
- [SMSSenderService](./SMSSenderService.md) — 短信发送服务
- [SSLCertService](./SSLCertService.md) — SSL证书管理服务
- [SSLPolicyService](./SSLPolicyService.md) — SSL/TLS策略管理服务
- [ScriptService](./ScriptService.md) — 脚本相关服务
- [ServerBandwidthStatService](./ServerBandwidthStatService.md) — 服务带宽统计服务
- [ServerBillService](./ServerBillService.md) — 服务账单相关服务
- [ServerClientBrowserMonthlyStatService](./ServerClientBrowserMonthlyStatService.md) — 浏览器统计
- [ServerClientSystemMonthlyStatService](./ServerClientSystemMonthlyStatService.md) — 操作系统统计
- [ServerDailyStatService](./ServerDailyStatService.md) — 服务统计相关服务
- [ServerDomainHourlyStatService](./ServerDomainHourlyStatService.md) — 服务域名按小时统计服务
- [ServerGroupService](./ServerGroupService.md) — 服务分组服务
- [ServerHTTPFirewallDailyStatService](./ServerHTTPFirewallDailyStatService.md) — WAF统计
- [ServerRegionCityMonthlyStatService](./ServerRegionCityMonthlyStatService.md) — 城市月份统计
- [ServerRegionCountryMonthlyStatService](./ServerRegionCountryMonthlyStatService.md) — 地区月份统计
- [ServerRegionProviderMonthlyStatService](./ServerRegionProviderMonthlyStatService.md) — 运营商月份统计
- [ServerRegionProvinceMonthlyStatService](./ServerRegionProvinceMonthlyStatService.md) — 省份月份统计
- [ServerService](./ServerService.md) — 网站服务相关服务
- [ServerStatBoardChartService](./ServerStatBoardChartService.md) — 统计看板条目
- [ServerStatBoardService](./ServerStatBoardService.md) — 统计看板
- [SysLockerService](./SysLockerService.md) — 互斥锁管理
- [SysSettingService](./SysSettingService.md) — 系统设置管理服务
- [TrafficDailyStatService](./TrafficDailyStatService.md) — 按日统计服务
- [TrafficPackagePeriodService](./TrafficPackagePeriodService.md) — 流量包有效期服务
- [TrafficPackagePriceService](./TrafficPackagePriceService.md) — 流量包价格服务
- [TrafficPackageService](./TrafficPackageService.md) — 流量包服务
- [UserADInstanceService](./UserADInstanceService.md) — 用户高防实例服务
- [UserAccessKeyService](./UserAccessKeyService.md) — 用户AccessKey相关服务
- [UserAccountDailyStatService](./UserAccountDailyStatService.md) — 用户账户统计服务
- [UserAccountLogService](./UserAccountLogService.md) — 用户账户日志服务
- [UserAccountService](./UserAccountService.md) — 用户账户服务
- [UserBillService](./UserBillService.md) — 账单相关服务
- [UserIdentityService](./UserIdentityService.md) — 用户实名认证服务
- [UserNodeService](./UserNodeService.md) — 用户节点管理服务
- [UserOrderService](./UserOrderService.md) — 用户订单相关服务
- [UserPlanService](./UserPlanService.md) — 用户购买的套餐管理服务
- [UserScriptService](./UserScriptService.md) — 用户脚本服务
- [UserService](./UserService.md) — 用户相关服务
- [UserTicketCategoryService](./UserTicketCategoryService.md) — 工单分类服务
- [UserTicketLogService](./UserTicketLogService.md) — 工单日志服务
- [UserTicketService](./UserTicketService.md) — 工单服务
- [UserTrafficBillService](./UserTrafficBillService.md) — 用户流量带宽子账单服务
- [UserTrafficPackageService](./UserTrafficPackageService.md) — 用户流量包服务