最近都在忙第三方广告对接的事情, 在此记录一下, 有些第三方的API文档扔了一个word文档,文档上几十上百个参数, 只有一个表格参数说明, 然后自己根据表格手写参数(真的折磨)
但是有几家就比较好, 会提供proto文件, 然后可以使用这个文件生成Request和Response(点赞)
- 对接的时候, 可以找商务人员问有没有提供
proto文件, 然后拿来自己生成代码protoc pb\xxx.proto --go_out=.- 生成之后, 请求参数, 响应参数, 枚举参数等等都有了, 对于后端对接非常舒服(希望以后后端的接口对接都能变成这样子)
 
 - 实际发送请求的示例代码如下
 
package main
import (
	"bytes"
	"io/ioutil"
	"log"
	"net/http"
	"github.com/golang/protobuf/proto"
	"xxxx/internal/pb"
)
func main() {
	getDataByAdServe()
}
func getDataByAdServe() {
    // 序列化请求数据
    r := &pb.AdProfRequest{}
    data, er := proto.Marshal(r)
    if er != nil {
        log.Fatal(er)
        return
    }
    
    // 发送 HTTP 请求, 注意实际使用设置请求超时时间
    reader := bytes.NewReader(data)
    resp, err := http.Post("http://127.0.0.1:8001/xxx", "application/x-protobuf", reader)
    if err != nil {
        log.Println(err)
        return
    }
    defer resp.Body.Close()
    
    //
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Println(err)
        return
    }
    
    // 反序列化响应
    var res pb.AdProfResponse
    if err := proto.Unmarshal(body, &res); err != nil {
        log.Println(err)
        return
    }
    
    log.Println(&res)
}