Go的实战小项目 | 青训营笔记

76 阅读2分钟

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

Go学习笔记

Go的实战小项目-在线词典

  1. 通过抓包来获取请求信息和响应信息
  2. 在Go中编写代码去请求该接口
  3. JSON解析响应内容
  4. 输出结果

在线词典

可以在打开一个任意的翻译网站,按下F12,选到Network(或者网络)

可以查看到是哪一个网络请求是提供翻译的 2023-01-17_164625.png

这时候就可以去复制cURL了

cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl---百度百科

2023-01-175.png

我们可以借助工具来帮助我们生成代码,

image.png

查看这个请求参数和返回的JSON数据,也可以通过一些工具帮我们生成对应的代码

image.png image.png

image.png

最后可以在程序中解析返回的JSON数据得到我们想要的数据,我们只是需要它的词典信息

image.png

最后通过遍历输出数据

var dictResponse DictResponse
err = json.Unmarshal(bodyText, &dictResponse)
if err != nil {
   log.Fatal(err)
}
for _, item := range dictResponse.Dictionary.Explanations {
   fmt.Println(item)
}

最后通过封装成一个函数,通过键盘输入参数或者go run 的时候指定参数都可以使用,这里采用从键盘输入的形式输入参数

var word string
for {
   fmt.Println("You can enter the word you want to query")
   _, err := fmt.Scanf("%s\n", &word)

   if err != nil {
      return
   }
   query(word)
}

image.png

可能在对不同的翻译网站进行这个项目的时候可能遇到的JSON数据的复杂程度不一样,例如百度翻译,在curl生成的 代码中有多个重名的一个结构体,这时候就需要我们去手动的调整一下了,有些我们不需要的数据也可以删掉,只保留我们需要的就可以了,可以去尝试一下不同的网站

image.png

小结: 网上很多强大且免费的工具性质的网站,我们可以利用好他们提高自己的编码效率,但是不能完全依赖于它,例如这个在线词典中生成百度翻译的响应结构,就出现很多同名的结构体,后续还是需要进行一定的校对,一些结构体我们也不一定用上,这时候我们也可以去掉。