Go语言入门 | 青训营笔记

132 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天

2023.01.15 今天青训营第一节课,主要介绍Go语法和三个实战小demo,视频课1个多小时,内容精炼没有废话体验好。

收获1 : 抓包

可以通过浏览器调试工具查看请求和返回的json,右键检查-网络,找到名为dict的请求,查看其标头、负载和预览。

截屏2023-01-15 15.50.00.png

使用复制为cURL来复制请求代码,从而使用代码而非浏览器访问。 可将代码放到终端尝试访问,可见返回了一段json。

截屏2023-01-15 15.55.07.png

通过curlconverter.com/go/ 把cURL转化为完整go代码。

package main

import (
   "fmt"
   "io/ioutil"
   "log"
   "net/http"
   "strings"
)

func main() {
   client := &http.Client{}
   var data = strings.NewReader(`{"trans_type":"en2zh","source":"nice"}`)
   req, err := http.NewRequest("POST", "https://api.interpreter.caiyunai.com/v1/dict", data)
   if err != nil {
      log.Fatal(err)
   }
   req.Header.Set("authority", "api.interpreter.caiyunai.com")
   req.Header.Set("accept", "application/json, text/plain, */*")
   req.Header.Set("accept-language", "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6")
   req.Header.Set("app-name", "xy")
   req.Header.Set("content-type", "application/json;charset=UTF-8")
   req.Header.Set("device-id", "")
   req.Header.Set("dnt", "1")
   req.Header.Set("origin", "https://fanyi.caiyunapp.com")
   req.Header.Set("os-type", "web")
   req.Header.Set("os-version", "")
   req.Header.Set("referer", "https://fanyi.caiyunapp.com/")
   req.Header.Set("sec-ch-ua", `"Not?A_Brand";v="8", "Chromium";v="108", "Microsoft Edge";v="108"`)
   req.Header.Set("sec-ch-ua-mobile", "?1")
   req.Header.Set("sec-ch-ua-platform", `"Android"`)
   req.Header.Set("sec-fetch-dest", "empty")
   req.Header.Set("sec-fetch-mode", "cors")
   req.Header.Set("sec-fetch-site", "cross-site")
   req.Header.Set("user-agent", "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Mobile Safari/537.36 Edg/108.0.1462.76")
   req.Header.Set("x-authorization", "token:qgemv4jr1y38jyq6vhvi")
   resp, err := client.Do(req)
   if err != nil {
      log.Fatal(err)
   }
   defer resp.Body.Close()
   bodyText, err := ioutil.ReadAll(resp.Body)
   if err != nil {
      log.Fatal(err)
   }
   fmt.Printf("%s\n", bodyText)
}

收获2 : json2struct

上面抓包对我来说是新东西,但是json和结构体不是。虽然感觉应该有这种代码生成器,但是笨蛋我还是第一次用,真舒服省着自己写。以前好像在v2看到有人发类似东西集合的工具箱,应该去看看还有什么类似的操作。
oktools.net/json2go

截屏2023-01-15 16.23.30.png

总结

青训营第一天结束,感觉良好,希望能坚持下来。