这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
安装 Go 语言
- 访问 go.dev/ ,点击 Download ,下载对应平台安装包,安装即可
- 下载完成之后在cmd输入go version,出现对于的版本号即可
- IDEA安装go插件 在maketplace输入Go 下载完成后重启IDEA
- GO配置 这个步骤一定要!!!!
- 在 golang 安装路径下寻找: 'go1.17.2\src\runtime\internal\sys\zversion.go' 文件
- 打开 ‘zversion.go’ 文件,在其中追加如下行(你的版本号)并保存
const TheVersion = `go1.17.2`
- 配置sdk---在GOOTROOT配置即可
Go 实战---在线翻译
在听完课程之后,原本想用有道翻译或者谷歌翻译,但是发现不能直接以post直接请求
所以改为方法改为get请求 翻译api是有道词典
1.获取url
网址文本翻译_机器翻译_在线翻译-有道智云AI开放平台 (youdao.com)
2.copyurl
如下图一样复制
3.转换url
网址Convert curl commands to code (curlconverter.com)
该网站可以根据请求 来转换为go语言的请求文件 我们只需要简单修改一下数据和路径,请求方式
会发现是一个go文件 新建main.go 复制粘贴即可
4.转换json数据
将response的数据复制
网址JSON转Golang Struct - 在线工具 - OKTools 转换
这个网址可以根据侯后端返回的JSON数据,转换为go语言的结构体的样式
来反序列化咱们的数据 来进行输出
复制到工程中
5.修改url
url :="https://aidemo.youdao.com/trans?from=Auto&to=Auto&q="
6.修改请求
//修改请求
req, err := http.NewRequest("GET", url+word, nil)
7.反序列化数据
咱们的请求已经可以成功发过去了 响应的数据还需做进一步解析 这就需要刚刚转换的结构体
var dictResponse DictResponse
err = json.Unmarshal(bodyText, &dictResponse)
if err != nil {
log.Fatal(err)
}
最后遍历即可 完整代码如下
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
"net/http"
)
type DictResponse struct {
ReturnPhrase []string `json:"returnPhrase"`
Query string `json:"query"`
ErrorCode string `json:"errorCode"`
L string `json:"l"`
TSpeakURL string `json:"tSpeakUrl"`
Web []struct {
Value []string `json:"value"`
Key string `json:"key"`
} `json:"web"`
RequestID string `json:"requestId"`
Translation []string `json:"translation"`
Dict struct {
URL string `json:"url"`
} `json:"dict"`
Webdict struct {
URL string `json:"url"`
} `json:"webdict"`
Basic struct {
ExamType []string `json:"exam_type"`
UsPhonetic string `json:"us-phonetic"`
Phonetic string `json:"phonetic"`
UkPhonetic string `json:"uk-phonetic"`
Wfs []struct {
Wf struct {
Name string `json:"name"`
Value string `json:"value"`
} `json:"wf"`
} `json:"wfs"`
UkSpeech string `json:"uk-speech"`
Explains []string `json:"explains"`
UsSpeech string `json:"us-speech"`
} `json:"basic"`
IsWord bool `json:"isWord"`
SpeakURL string `json:"speakUrl"`
}
func main() {
var s string
fmt.Scan(&s)
query(s)
}
func query(word string) {
client := &http.Client{}
url :="https://aidemo.youdao.com/trans?from=Auto&to=Auto&q="
//创建请求
req, err := http.NewRequest("GET", url+word, nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("authority", "aidemo.youdao.com")
req.Header.Set("accept", "application/json, text/javascript, */*; q=0.01")
req.Header.Set("user-agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36")
req.Header.Set("content-type", "application/x-www-form-urlencoded; charset=UTF-8")
req.Header.Set("origin", "https://ai.youdao.com")
req.Header.Set("sec-fetch-site", "same-site")
req.Header.Set("sec-fetch-mode", "cors")
req.Header.Set("sec-fetch-dest", "empty")
req.Header.Set("referer", "https://ai.youdao.com/")
req.Header.Set("accept-language", "zh-CN,zh;q=0.9")
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)
}
var dictResponse DictResponse
err = json.Unmarshal(bodyText, &dictResponse)
if err != nil {
log.Fatal(err)
}
fmt.Println(word)
for _,item :=range dictResponse.Basic.Explains{
fmt.Println(item)
}
}