快来看,敖丙还不会curl

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 不知道大家在平时有没有用过curl,之前我是没怎么用的,最近也开始用起来了。

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

这篇文章来简单介绍一下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了)

25.jpg


体验curl


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


curl www.baidu.com

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

24.jpg

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


curl -i www.baidu.com

23.jpg

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


curl -v www.baidu.com

22.jpg

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


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

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

21.jpg

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


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

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

20.jpg

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

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

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

19.jpg

在发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 后面就可以增加头信息

18.jpg

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


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

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

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

17.jpg

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

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


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

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

16.jpg


三歪小故事


15.jpg

在前阵子我也开始用起了curl来请求接口,有一次由于域名要切换的原因,找到了运维大佬帮我弄一下。运维大佬说:“你加个Host 指定一下”。我当时只用curl 来发点请求什么的,加个头信息这种肯定是忘了(不会);

只能双手离开键盘,让大佬操作了

curl --help可以找到curl所有的参数。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
打赏
0
0
0
0
1282
分享
相关文章
Spring Boot 学习研究笔记(十九)-docker部署SpringBoot 日志目录挂载
Spring Boot 学习研究笔记(十九)-docker部署SpringBoot 日志目录挂载
665 0
Docker安装Redis并配置文件启动
之前已经写过Redis分别在Linux、Windows上安装部署,及其集群环境搭建。这次写一篇Docker容器部署Redis的教程,配置文件方式启动服务。
Docker安装Redis并配置文件启动
|
9月前
|
Springboot WebFlux项目结合mongodb进行crud
这篇文章介绍了如何使用Spring Boot WebFlux框架结合MongoDB进行基本的CRUD(创建、读取、更新、删除)操作,包括项目设置、实体类和Repository的创建、控制器的实现以及配置文件的编写。
179 0
Springboot WebFlux项目结合mongodb进行crud
部署tomcat部署实战案例
本文是关于Tomcat部署实战案例的教程,包括通过yum和二进制方式部署Tomcat的详细步骤,以及如何监控Tomcat服务。
291 84
部署tomcat部署实战案例
E: flAbsPath on /var/lib/dpkg/status failed - realpath (2: 没有那个文件或目录)
E: flAbsPath on /var/lib/dpkg/status failed - realpath (2: 没有那个文件或目录)
350 0
探索iOS自动化测试:使用Swift编写UI测试
【8月更文挑战第31天】在软件开发的海洋中,自动化测试是保证船只不偏离航线的灯塔。本文将带领读者启航,深入探索iOS应用的自动化UI测试。我们将通过Swift语言,点亮代码的灯塔,照亮测试的道路。文章不仅会展示如何搭建测试环境,还会提供实用的代码示例,让理论知识在实践中生根发芽。无论你是新手还是有经验的开发者,这篇文章都将是你技能提升之旅的宝贵指南。
【专栏】对比了思科与华为网络设备的基本配置、接口、VLAN、路由、访问控制列表及其它关键命令
【4月更文挑战第28天】本文对比了思科与华为网络设备的基本配置、接口、VLAN、路由、访问控制列表及其它关键命令。尽管两者在很多操作上相似,如设备命名(思科:`hostname`,华为:`sysname`)、查看版本信息(思科:`show version`,华为:`display version`),但在某些方面存在差异,如接口速率设置(两者都使用`speed`和`duplex`,但命令结构略有不同)和VLAN配置(华为的`port hybrid`命令)。
736 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问