# 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) — 用户流量包服务