快来看,敖丙还不会curl

不知道大家在平时有没有用过curl,之前我是没怎么用的,最近也开始用起来了。

curl应该还算是一个比较常见的东西吧?比如说,我们在学习Elasticsearch的时候去看官方文档,就可以看到curl的踪影,有的时候看别人的写的文档也会看到curl的踪影。

这篇文章来简单介绍一下curl以及它的用法,要是大家再遇上curl了,那就知道这是什么了。

介绍curl

什么是curl

我们进入官网,看到简介是这样的:

command line tool and library for transferring data with URLs

curl是在命令行下工作的,利用URL的语法进行数据的传输

看起来有点抽象,我们可以简单地理解为:我们会用curl发出网络请求,然后得到和提取数据

为什么我们要用curl?以HTTP请求为例,如果要发出请求,我们常用的有POSTMAN、IDEA也集成HTTP Client等等

上面这些工具不香吗?讲真,还是挺香的。

那有了上面的工具,为什么我们还要用curl呢?

我们不是所有的环境都有POSTMANIDEA的,比如说我们的Centos系统 。此时我们又想要发出网络请求,我们就可以通过curl去帮我们做。

curl不单单能支持http请求,它支持的协议有30+种,最常使用的有FILE、FTP、HTTP、HTTPS等。

总的来说:curl是一款很好用的网络请求工具,在浏览文档的时候都会有它的身影,如果你还不知道这个工具,建议可以了解一下。

我现在把系统常用的接口的请求给写到一个文档上,想要执行哪个接口,检索出来,在命令行执行一下就好了,还是非常方便的。(我命令行窗口会一直常开,几乎不用开POSTMAN了)

体验curl

我们首先来体验一下最简单的curl 用法:

curl www.baidu.com

我们可以看到返回baidu的HTML信息:

现在我们想看百度给我们返回的响应头信息,于是我们可以这样干:

curl -i www.baidu.com

响应头的信息还不够,我现在请求头和响应头都想看:

curl -v www.baidu.com

OK,现在我们热身完了。我们平时可能会发个GET请求,然后把参数带给接口的吧?在curl里怎么做呢?其实很简单,跟浏览器的方式是一样的,我们把参数拼在链接后面就可以了(这里注意带单引号):

curl  '127.0.0.1/send?receivers=3y&age=24'

打到断点可以看到,我们成功把参数给带过去了:

发完GET,我们有的时候也会使用POST请求,怎么做呢?

curl -X POST --data "receivers=3y" '127.0.0.1/send'

接口也是能拿到参数的,只不过我们发的是POST请求。

上面的命令好像复杂了一点,其实不然。-X POST表示发的是POST请求,而--date 后面跟着表示要带什么参数过去。

我们在后面加个-v参数就知道上面是不是真的发了POST请求。

当我们执行curl -X POST --data "receivers=三歪" '127.0.0.1/send' -v时,看到返回的信息会告诉我们(其实我们不需要使用-X POST在标明这是一个POST请求,curl已经可以帮我们判断了)

在发POST请求的时候,我们也有更加简便的参数(-d来标明我们这是POST请求的数据体):

curl -d "receivers=三歪" '127.0.0.1/send'

众所周知HTTP支持好几种动作,我们想发PUT请求,那就使用-X PUT就可以发出PUT请求了。(如果不指定,默认就是GET请求)

OK,现在我们已经会发GETPOST请求了。现在我们的接口前后端交互一般用的是json格式,于是我们要发送一个POST请求并且告诉服务端我们的参数是json格式,怎么做?实际上就是加头信息嘛~

curl -d '{"receivers":"3y"}' -H 'Content-Type: application/json' "127.0.0.1/sendWithJSON"

我们可以看到,用-H 后面就可以增加头信息

很多时候,我们在测接口的时候都需要登录的,一般我们都要为其添加Cookie信息。在curl里边也好办,我们使用-b 后带Cookie的信息就好了。

curl -d '{"receivers":"3y"}' -b 'aaaa' -H 'Content-Type: application/json' "127.0.0.1/sendWithJSON"

上面就是基本在开发中常用的参数了,其实也不是很多吧。

curl是一个请求的工具,服务端返回的文件也是可以下载的。我们通过-o来下载百度返回的HTML

-O参数将服务器回应保存成文件,并将 URL 的最后部分当作文件名。

再回过头来看Elasticsearch给我们的命令,应该就能看得懂了:

curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-darwin-x86_64.tar.gz

小技巧:我们在Chrome浏览器调试的时候,可以把请求的信息复制为curl格式的。

一种基于有效视角点方法的相机位姿估计MATLAB实现方案 该算法通过建立三维空间点与二维图像点之间的几何对应关系,实现相机外部参数的精确求解。其核心原理在于将三维控制点表示为四个虚拟基点的加权组合,从而将非线性优化问题转化为线性方程组的求解过程。 具体实现步骤包含以下关键环节:首先对输入的三维世界坐标点进行归一化预处理,以提升数值计算的稳定性。随后构建包含四个虚拟基点的参考坐标系,并通过奇异值分解确定各三维点在该基坐标系下的齐次坐标表示。接下来建立二维图像点与三维基坐标之间的投影方程,形成线性约束系统。通过求解该线性系统获得虚拟基点在相机坐标系下的初步坐标估计。 在获得基础解后,需执行高斯-牛顿迭代优化以进一步提高估计精度。该过程通过最小化重投影误差来优化相机旋转矩阵和平移向量。最终输出包含完整的相机外参矩阵,其中旋转部分采用正交化处理确保满足旋转矩阵的约束条件。 该实现方案特别注重数值稳定性处理,包括适当的坐标缩放、矩阵条件数检测以及迭代收敛判断机制。算法能够有效处理噪声干扰下的位姿估计问题,为计算机视觉中的三维重建、目标跟踪等应用提供可靠的技术基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值