用 Go 调用 YesApi 接口的完整教程:从安装、签名算法、发起请求到错误处理,附可运行示例代码。
YesApi Pro 私有部署后,用同样的 SDK 方式接入你自建的接口——源码交付、当天上线。
Go 用标准库即可:crypto/md5 签名、net/http + net/url 发 form 请求,无需第三方依赖。
# 仅用 Go 标准库,无需额外安装
go mod init yesapi-demoYesApi 接口用签名(sign)防篡改,算法固定:把参数按 key 升序排序 → 拼接所有参数值(不含 key)→ 末尾追加 app_secret → MD5 → 转大写。各语言实现一致,务必与服务端保持相同规则。
package main
import (
"crypto/md5"
"encoding/hex"
"sort"
"strings"
)
// 签名:按 key 排序 → 拼接所有 value → 追加 app_secret → md5 → 大写
func yesapiSign(params map[string]string, appSecret string) string {
keys := make([]string, 0, len(params))
for k := range params {
keys = append(keys, k)
}
sort.Strings(keys)
var b strings.Builder
for _, k := range keys {
b.WriteString(params[k])
}
b.WriteString(appSecret)
sum := md5.Sum([]byte(b.String()))
return strings.ToUpper(hex.EncodeToString(sum[:]))
}请求方式为 POST,地址为 HOST/?s=服务名,参数用 form 表单编码,需带上 s、app_key 与计算好的 sign。下面是 Go 的完整可运行示例:
import (
"io"
"net/http"
"net/url"
"strings"
)
func main() {
host := "http://your-domain.yesapi.cn/"
appKey := "YOUR_APP_KEY"
appSecret := "YOUR_APP_SECRET"
service := "App.Table.FreeQuery"
params := map[string]string{
"model_name": "news",
"page": "1",
"perpage": "10",
"s": service,
"app_key": appKey,
}
params["sign"] = yesapiSign(params, appSecret)
form := url.Values{}
for k, v := range params {
form.Set(k, v)
}
endpoint := strings.TrimRight(host, "/") + "/?s=" + service
resp, _ := http.PostForm(endpoint, form)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
println(string(body))
}YesApi 统一返回 JSON:ret 为状态码(200 成功),data 为业务数据,msg 为错误信息。务必判断 ret 再取数据:
// 用 encoding/json 解析,判断 ret 字段
// {"ret":200,"data":{...},"msg":""}
var result struct {
Ret int `json:"ret"`
Data interface{} `json:"data"`
Msg string `json:"msg"`
}
json.Unmarshal(body, &result)
if result.Ret == 200 {
// 使用 result.Data
} else {
log.Println("YesApi error:", result.Msg)
}99% 是签名规则不一致:确认①参数按 key 升序排序 ②只拼接「值」不拼 key ③末尾追加 app_secret ④结果转大写。参数值需与最终发送的一致(含 s、app_key)。
在 YesApi Pro 管理后台创建应用后获得。app_key 用于标识身份,app_secret 用于签名,务必只存服务端。
推荐 POST,参数用 form 表单编码提交到 HOST/?s=服务名。POST 更安全,也避免 URL 长度限制。
一样。私有部署只是把 HOST 换成你自己的域名,签名算法与调用方式完全一致。Java 旗舰版 ¥33,800 起、PHP 标准版 ¥15,899 起。