这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
1.自动生成请求代码:
打开浏览器开发者模式,找到发出请求的请求头。
右键->复制->以curl格式复制。(chrome中有cmd、bash两种格式,选择bash)
粘贴复制到的内容,可自动生成go语言请求体,该代码可以直接运行,输出返回的json文件。
2.自动生成返回结构体
在浏览器开发者模式中找到相应内容,复制内容
打开网址 oktools.net/[json2go](oktools.net/json2go)
粘贴复制到的返回内容,可自动将获得的json文件转化为go结构体
3.将上述代码黏贴到go文件中,修改细节
添加请求结构体:使用到的有transtype和source
type DictRequest struct{
TranType string `json:"trans_type"`
Source string `json:"source"`
UserID string `json:"user_id"`
}
添加输入:(与课程代码有所不同,使用简单的scanf)
var word string
fmt.Println("输入单词:")
fmt.Scanf("%s",&word)
将请求内容替换,source替换为输入的单词:注意将request序列化后赋值给data,作为请求内容发送
//var data=strings.NewReader(`{"trans_type":"en2zh","source":"hello"}`)
request :=DictRequest{TranType: "en2zh",Source: word}
buf,err :=json.Marshal(request)
if err != nil {
log.Fatal(err)
}
var data = bytes.NewReader(buf)
将返回内容存入自动生成的返回结构体中,如下打印可以看到返回详情:
反序列化后才可以打印出字符串。
err = json.Unmarshal(bodyText,&response)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%#v\n",response)
找到需要的内容,打印出来for range循环打印中文释义
fmt.Println(word," UK:",response.Dictionary.Prons.En," US:",response.Dictionary.Prons.EnUs)
for _, item :=range response.Dictionary.Explanations{
fmt.Println(item)
}
最终实现效果: