go语言,实现彩云翻译API

直接上代码,都有注释,可以看,第一个是请求数据的结构体,官方建议,如果请求次数多,可以尝试用数组批量传进去!

彩云官方教程

type DictRequest struct {
    TransType string   `json:"trans_type"`
    Source    []string `json:"source"`
    RequestId string   `json:"request_id"`
    Detect    bool     `json:"detect"`
}
func QueryCaiYun(word []string) (s string, err error) {
    client := &http.Client{} //定义客户
    request := DictRequest{TransType: "en2zh", Source: word, RequestId: "LoYoi", Detect: true}
    buf, err := json.Marshal(request)
    if err != nil {
        fmt.Println("错误:4")
        return word[0], errors.New("没有值")
        //log.Fatal(err)
    }
    req, err := http.NewRequest("POST", "https://api.interpreter.caiyunai.com/v1/translator", bytes.NewReader(buf))
    if err != nil {
        fmt.Println("错误:3")
        //log.Fatal(err) //打印日志,退出程序
        return word[0], errors.New("没有值")
    }
    //设置请求头

    req.Header.Set("Accept", "application/json")
    req.Header.Set("X-Authorization", "token:")//这里是自己的token
    // 发起请求
    resp, err := client.Do(req)
    if err != nil {
        //log.Fatal(err) //打印日志,退出程序
        fmt.Println(err.Error() + "2")
        return word[0], errors.New("没有值")
    }
    defer resp.Body.Close() //defer 会在函数结束后从后往前触发,Close() 手动关闭 Body流,防止内存资源泄露
    // 读取响应
    bodyText, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        //log.Fatal(err) //打印日志,退出程序
        fmt.Println(err.Error() + "1")
        return word[0], errors.New("没有值")
    }
    if resp.StatusCode != 200 { // 防御式编程,判断状态码是否正确
        fmt.Println("错误码:" + strconv.Itoa(resp.StatusCode) + "\n错误信息:" + string(bodyText))
        return word[0], errors.New("没有值")
        //log.Fatal("bad StatusCode:", resp.StatusCode, "body", string(bodyText)) //打印日志,退出程序
    }
    js, err := simplejson.NewJson(bodyText)
    dst := js.Get("target").GetIndex(0).MustString() //.Get("dst").
    //fmt.Println(dst)
    if dst == "" {
        fmt.Println("没找到值")
        return word[0], errors.New("没有值")
    } else {
        return dst, nil //只有成功了,才会返回空值
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值