curl 常见使用详解以及调用post/get接口以及post请求使用json传参

前言

CURL 是一个功能强大的命令行工具,用于数据传输和协议测试。它最初设计用于命令行文件传输,但现已成为支持HTTP、HTTPS、FTP、SFTP等多种协议的通用HTTP客户端。

基本语法

cURL的基本语法如下:

curl [options] [URL...]

其中,options 是可选的命令行选项,用于配置各种设置;URL 是要访问的网址。最基本的用法是直接提供URL:

curl http://example.com/api 

这将向 http://example.com 发送一个GET请求,并在终端输出响应内容。

使用详解

GET请求

发送GET请求可以通过以下方式:

基本GET请求:
curl http://example.com 
包含查询字符串参数的GET请求:
curl "http://example.com/api?param1=value1&param2=value2" 
包含请求头的GET请求:
curl -H "X-API-Key: 123456" http://example.com/api 
增加请求头和参数的GET请求:
curl -H "X-USER-ID:12321" http://localhost:8080/hot/get?code=123 

POST请求

发起POST请求可以通过以下方式:

使用JSON体的POST请求
curl -X POST -H "Content-Type: application/json" -H "X-USER-ID:123" "http://localhost:8080/activity/add" -d '{"name":"新增活动"}'
使用表单数据的POST请求
curl -X POST -d "name=John Doe&age=30" http://localhost:8080/api/user

PUT请求

PUT请求通常用于更新服务器上的现有资源。以下是使用cURL发送PUT请求的基本方法:

# 发送一个简单的PUT请求
curl -X PUT http://example.com/resource

# 发送PUT请求并包含请求体
curl -X PUT -d "更新的数据" http://example.com/resource

# 发送PUT请求并包含请求头和请求体
curl -X PUT -H "Content-Type: application/json" -d '{"key":"value"}' http://example.com/resource

DELETE请求

DELETE请求用于从服务器上删除资源。以下是使用cURL发送DELETE请求的基本方法:

# 发送一个简单的DELETE请求
curl -X DELETE http://example.com/resource

# 发送DELETE请求并包含请求头
curl -X DELETE -H "Authorization: Bearer YOUR_ACCESS_TOKEN" http://example.com/resource

PUT或DELETE 注意事项

  • 请求头:在发送PUT或DELETE请求时,可能需要包含特定的请求头,如Content-TypeAuthorization
  • 请求体:对于PUT请求,通常需要在请求体中提供要更新的数据。对于DELETE请求,请求体不是必须的,但有时可以用来传递额外的参数。
  • 认证:某些API可能需要认证才能执行PUT或DELETE操作。在这种情况下,需要在请求头中包含认证信息。
  • 错误处理:使用-i--include选项来查看响应头,这有助于诊断请求过程中可能出现的问题。

示例:使用cURL进行PUT和DELETE请求

假设你正在使用一个API,需要更新一个资源并稍后删除它:

# PUT请求:更新资源
curl -X PUT -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_ACCESS_TOKEN" -d '{"name":"更新后的名称", "description":"更新后的描述"}' http://api.example.com/resources/123

# DELETE请求:删除资源
curl -X DELETE -H "Authorization: Bearer YOUR_ACCESS_TOKEN" http://api.example.com/resources/123

文件操作

上传文件
curl -X POST -F "file=@file.txt" http://localhost:8080/api/upload
下载文件
curl -O http://example.com/file.zip 
其他文件协议
FTP/FTPS

用途:用于文件传输。
使用方法:

curl ftp://example.com/path/to/file
curl -u username:password ftp://example.com
curl --ftp-ssl ftps://example.com
SFTP

用途:安全文件传输协议,用于安全地传输文件。
使用方法:

curl -sS ftp://example.com/path/to/file
curl -u username --sftp-ask-pass ftp://example.com
SCP

用途:基于SSH的文件传输。
使用方法:

curl -sS scp://example.com/path/to/file
curl -u username --ssh-private-key ~/.ssh/id_rsa scp://example.com
S3

用途:与Amazon S3云存储服务进行交互。
使用方法:

curl -X POST -H "Authorization: AWS AccessKey:SecretKey" -H "Content-Type: application/json" --data-binary @file.txt s3://bucketname/path/to/file

重试机制

重试失败的请求
curl --retry 5 http://example.com 
在连接被拒绝时重试:
curl --retry-connrefused http://example.com 

并发请求

发送并发请求
curl -Z -O http://example.com/file[1-5].zip 
使用多个并发连接:
curl --parallel --parallel-max 8 http://example.com/api 

响应处理

保存响应到文件
curl -o response.txt http://example.com 
查看响应头信息
curl -I http://example.com 

安全性和SSL/TLS

使用自定义CA证书:
curl --cacert /path/to/cacert.pem https://example.com 
忽略SSL/TLS证书验证(不推荐在生产环境中使用)
curl --insecure https://example.com 

进阶使用

错误处理和调试:使用 -v 或 --verbose 选项查看详细的调试信息。
性能优化:使用 --limit-rate 限制传输速率,或使用 --retry-delay 设置重试间隔。
高级特性:使用 --cookie 处理cookies,或使用 --proxy 设置代理。

可视化工具

推荐使用如 Postman 等工具进行API测试和调试。

文档

官方文档详见: 点我

结语

CURL是一个多用途的工具,适用于从简单的数据传输到复杂的API测试。通过本文的详细介绍,希望读者能够更深入地了解并有效利用cURL的各项功能。


good day !!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

寂夜了无痕

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

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

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

打赏作者

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

抵扣说明:

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

余额充值