curl向es集群发送请求 curl发送http_curl向es集群发送请求

照片由Aron在Unsplash上拍摄

每个开发人员都需要知道一堆有效的工具。 此类工具中的cURL😄

在本文中,我将解释如何使用curl来发出HTTP请求 。

什么是cURL

cURL基本上用于通过Internet协议为给定URL传输数据。

Curl是一个客户端程序。 在名称cURL中 , c代表客户端, URL表示curl与URL配合使用。

curl项目具有curl命令行和libcurl库。 在本文中,我们将重点介绍curl命令行。

Curl处理一系列Internet协议,例如HTTP,FTP,SMTP,TELNET等。

在本文中,我们将仅处理从Curl发出HTTP请求。

前提条件

您可以使用以下命令检查是否在系统中安装了Curl。

curl --version

如果您的系统中没有Curl,则可以从此URL https://curl.haxx.se/dlwiz/安装。

如何对HTTP请求使用Curl

我已经使用NodeJS构建了2个REST API端点。 一个端点支持GET请求,另一个端点支持POST请求。

在本文中,我们将使用Curl调用GET和POST端点。

请从此github存储库中将NodeJS代码克隆到本地

该存储库包含有关如何克隆和运行NodeJS代码的说明。

克隆代码后,进入项目文件夹并使用以下命令启动应用程序。

node server.js

该应用程序在本地主机端口3000上运行。

使用cURL获取请求

该应用程序具有GET端点/ sample 。 该端点接受名为name的查询参数。

让我们使用curl调用此API端点。

转到新的命令提示符,然后键入以下命令

curl http://localhost:3000/sample?name=aditya

这将给出以下输出

{ "text":"Hello aditya" }

您还可以使用Curl获得详细的结果。 运行以下命令

curl -v http://localhost:3000/sample?name=aditya

-v用于获取详细的输出。

这将给出以下输出。

* Trying ::1... 
* TCP_NODELAY set 
* Trying 127.0.0.1... 
* TCP_NODELAY set 
* Connected to localhost ( 127.0.0.1 ) port 3000 ( #0) 
> GET /sample?name = aditya HTTP/1.1 
> Host: localhost:3000 
> User-Agent: curl/7.55.1 
> Accept: * / * 
> 
 < HTTP/1.1 200 OK 
 < Content-Type: application/json 
 < Date: Thu, 15 Nov 2018 12:36:21 GMT 
 < Connection: keep-alive 
 < Content-Length: 23 
 < 
{ "text":"Hello aditya" }* Connection #0 to host localhost left intact 
 
 
 
 详细结果包含状态码,内容类型,内容长度等详细信息。 它可以用来更好地了解HTTP请求期间发生的情况。 
 状态码为200,表示HTTP请求成功。 
 响应的Content-type是JSON。 
 内容长度指示响应的大小。 此处的响应大小为23个字节。 
 带cURL的POST请求 
 该应用程序具有POST端点/ test 。 该端点接受以下格式的帖子正文。 
 
 
 
  { 
 "value":"nodejs" 
 } 
 
 
 
 为了进行POST调用,请键入以下命令。 
 
 
 
  curl --header "Content-Type: application/json" -d "{\"value\":\"node JS\"}" http://localhost:3000/test 
 
 
 
 -header指示帖子正文的内容类型。 这是JSON。 
 -d用于发送帖子正文内容。 
 该命令的输出如下所示。 
 
 
 
  {"text":"Post Request Value is node JS"} 
 
 
 
 要获得详细结果,请使用以下命令 
 
 
 
  curl -v --header "Content-Type: application/json" -d "{\"value\":\"node JS\"}" http://localhost:3000/test

输出如下所示。

* Trying ::1... 
* TCP_NODELAY set 
* Trying 127.0.0.1... 
* TCP_NODELAY set 
* Connected to localhost ( 127.0.0.1 ) port 3000 ( #0) 
> POST /test HTTP/1.1 
> Host: localhost:3000 
> User-Agent: curl/7.55.1 
> Accept: * / * 
> Content-Type: application/json 
> Content-Length: 19 
> 
* upload completely sent off: 19 out of 19 bytes 
 < HTTP/1.1 200 OK 
 < Content-Type: application/json 
 < Date: Thu, 15 Nov 2018 13:03:37 GMT 
 < Connection: keep-alive 
 < Content-Length: 41

命令行提供的其他选项

可以使用-H选项修改现有的标头。

运行以下命令将User-Agent标头修改为Dummy Agent

curl -v -H "User-Agent:Dummy Agent" http://localhost:3000/sample?name=adi

上面命令的输出如下所示

* Trying ::1... 
* TCP_NODELAY set 
* Trying 127.0.0.1... 
* TCP_NODELAY set 
* Connected to localhost ( 127.0.0.1 ) port 3000 ( #0) 
> GET /sample?name = adi HTTP/1.1 
> Host: localhost:3000 
> Accept: * / * 
> User-Agent:Dummy Agent 
> 
 < HTTP/1.1 200 OK 
 < Content-Type: application/json 
 < Date: Thu, 15 Nov 2018 13:33:27 GMT 
 < Connection: keep-alive 
 < Content-Length: 20 
 < 
{ "text":"Hello adi" }* Connection #0 to host localhost left intact

在上面的输出中,可以看到User-Agent已成为Dummy Agent 。

现在,假设您要删除主机头。 可以通过运行以下命令来完成。

curl -v -H "Host:" http://localhost:3000/sample?name=adi 
 
 
 
 上面命令的输出在下面给出,可以看到主机不再存在 
 
 
 
  * Trying ::1... 
* TCP_NODELAY set 
* connect to ::1 port 3000 failed: Connection refused 
* Trying 127.0.0.1... 
* TCP_NODELAY set 
* Connected to localhost ( 127.0.0.1 ) port 3000 ( #0) 
> GET /sample?name = adi HTTP/1.1 
> User-Agent: curl/7.55.1 
> Accept: * / * 
> 
 < HTTP/1.1 200 OK 
 < Content-Type: application/json 
 < Date: Thu, 15 Nov 2018 13:38:37 GMT 
 < Connection: keep-alive 
 < Content-Length: 20 
 < 
{ "text":"Hello adi" }* Connection #0 to host localhost left intact

-H也可以用于添加新的标头。 可以使用语法curl -v -H "newheader: headervalue"

参考文献

cURL的文档: https ://ec.haxx.se/

有关对HTTP请求使用Curl的更多信息https://ec.haxx.se/http.html

恭喜😄

现在,您知道如何使用cURL进行基本的HTTP请求。 本文仅介绍卷曲实际可以完成的一小部分。

要了解有关curl的更多信息,可以查看上面提供的文档链接。

关于作者

我热爱技术,并关注该领域的进步。