Go语言基础——通过获取网站API的cUrl,生成可直接执行的request代码(附:详细实战案例和源码)

作者:非妃是公主
专栏:《Golang》
博客地址https://blog.csdn.net/myf_666
个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩
在这里插入图片描述

一、cUrl是什么?

cURL(客户端URL)是一个开放源代码的命令行工具,也是一个跨平台的库(libcurl),用于在服务器之间传输数据,并分发给几乎所有新的操作系统。cURL编程用于需要通过Internet协议发送或接收数据的几乎任何地方。

简单地说,通过cUrl命令,就可以实现对其它服务器中资源的请求,我们请求到response后,在对response进行解析,以获得我们需要的数据。

二、cUrl如何获取?

1. cUrl在哪?

web浏览器中,我们每发送1个请求,比如点击一个按钮,对应都有着响应的cUrl指令在运行,然后浏览器把数据解析后返回给我们。以彩云翻译为例:https://fanyi.caiyunapp.com/#/

翻译文字:
在这里插入图片描述

其实,这是1个请求,参数为用户的输入,返回数据为输入参数对应的翻译。

2. 如何获取?详细步骤

  • 第 1 步:f12打开开发者工具,并点击网络,如下图:
    在这里插入图片描述

  • 第 2 步:ctrl+R刷新记录,如下:
    在这里插入图片描述

  • 第 3 步:继续点击翻译按钮,模拟请求发送,可以看到名称中出现了dict、translator等请求,点进去看一下表头。
    在这里插入图片描述

  • 第 4 步:查看表头、负载、预览等可以发现如下信息:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 通过这些信息,我们就可以确定,这就是我们想要用的请求request,进而排除translator!

  • 第 5 步:复制请求为cURL(bash)。注意:这里要选择bash,而不是cmd。至于原因,具体说来就是bash命令不仅可以运行windows系统上而且可以运行在Linux系统上,但是cmd命令只能运行在Linux上,而一般网站服务器的操作系统都是Linux系统,因此要选择bash版本的命令,详细内容可以查看这篇文章:https://www.zhihu.com/question/43134881/answer/1834076537
    在这里插入图片描述

  • 经过以上 5 个步骤:我们就获得了cURL(bash)。

三、将cURL转化为不同语言的request代码

这里可以采用一个网站进行转换:https://curlconverter.com/go/

网站中可以选择不同的语言类型,如下:
在这里插入图片描述

此处,以Go语言为例,转换结果如下:

在这里插入图片描述

转化得到的代码:

package main

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

func main() {
	client := &http.Client{}
	var data = strings.NewReader(`{"trans_type":"en2zh","source":"good"}`)
	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")
	req.Header.Set("app-name", "xy")
	req.Header.Set("content-type", "application/json;charset=UTF-8")
	req.Header.Set("device-id", "")
	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="99", "Google Chrome";v="109", "Chromium";v="109"`)
	req.Header.Set("sec-ch-ua-mobile", "?0")
	req.Header.Set("sec-ch-ua-platform", `"Windows"`)
	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 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
	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)
}

五、运行结果

运行结果如下,从结果中可以看出,正常打印输出了json格式的response:

在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cherries Man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值