实战案例 | 青训营笔记

63 阅读2分钟

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

在线词典

1.概述

用户可以在命令行里面查询一个单词,我们能通过调用第三方的API查询到单词的翻译并打印出来。这个例子里面将会学习到使用go语言来发送HTTP请求、解析json,还会学习如何使用代码生成来提高开发效率。

2.抓包

以彩云科技提供的开源在线翻译为例子:fanyi.caiyunapp.com/

打开以上链接后,右键,然后点击检查,打开浏览器的开发者工具。此时输入一个词语后点一下翻译按钮,浏览器就会发送一系列请求,然后找到network中有一个dict(Request Method:POST),然后点击payload和preview仔细检查是否是想要的url。请求的header十分复杂。开头是json的有两个字段。一个是代表你是从什么语言转化成什么语言,source就是你要查询的单词。API的返回结果里面会有wiki和dictionary两个字段。我们需要用到的结果主要在dictionary.explanations字段里面。

3.代码生成

在golang里面去发送这个请求,我们可以右键刚刚找到的那个dict点击copy as curl。copy完成之后在终端粘贴,成功后会返回一串json。

然后打开curlconver.con/#go

然后复制刚刚的请求,选择go语言。生成的代码可以直接copy到编辑器里面了。运行完生成的代码后,能够看到我们已经能够成功地发出请求,把返回的json打印出来。但是现在那个输入是固定的。我们是要从一个变量的输入,我们需要用到接送序列化。

在golang里面,我们需要生成一段json,常用的方式是我们先构造出来一个结构体,这个结构体和我们需要生成的json的结构是一一对应的。此时有一个小技巧在windows里面我们复制刚才dict中的response的json请求。

然后打开oktools.net/json2go

然后将刚才复制的字段复制就会得到相应的结构体啦。非常高效率。