小红书 API 接入教程(Go):用 net/http 跑通第一个请求
小红书数据
API教程
Go
这篇教程带你用 Go 接入小红书(RedNote / Xiaohongshu)数据接口。和 Python 与 Node.js 版一样,你无需自建爬虫——Rnote API 已经把采集基础设施备好,你只用标准库 net/http 发一个 GET 请求即可。
第一步:注册获取 API Key
前往注册页创建账户并验证邮箱,获取免费额度与 API Key。
第二步:发起第一个请求
仅用 Go 标准库,无需第三方依赖:
package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
endpoint := "https://rnote.dev/api/v2/crawler/search/notes"
q := url.Values{}
q.Set("keyword", "美食推荐")
q.Set("page", "1")
req, _ := http.NewRequest("GET", endpoint+"?"+q.Encode(), nil)
req.Header.Set("X-API-Key", "YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
var data map[string]any
json.Unmarshal(body, &data)
fmt.Println(data)
}
第三步:封装一个带重试的调用
func call(path string, params url.Values, retries int) ([]byte, error) {
endpoint := "https://rnote.dev/api/v2/crawler/" + path + "?" + params.Encode()
var lastErr error
for i := 0; i < retries; i++ {
req, _ := http.NewRequest("GET", endpoint, nil)
req.Header.Set("X-API-Key", "YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
lastErr = err
} else {
body, _ := io.ReadAll(resp.Body)
resp.Body.Close()
if resp.StatusCode == 200 {
return body, nil
}
lastErr = fmt.Errorf("HTTP %d", resp.StatusCode)
}
time.Sleep(time.Duration(1<<i) * time.Second) // 指数退避
}
return nil, lastErr
}
仅成功请求(HTTP 2xx)扣费,失败重试不额外计费,所以可以放心加重试逻辑。
计费与额度
按请求计费、无月费、无最低消费;注册即送免费额度。充值方式与当前优惠见定价页。
下一步
免费注册,现在就用 Go 发出第一个请求。