玩转curl指令—测试简单的HTTP接口

简介: 玩转curl指令—测试简单的HTTP接口

官网:https://curl.se/

GitHub:https://github.com/curl/curl

Doc.:https://everything.curl.dev/

昨天在测试一个HTTP接口的时候,发现是添加功能,按照Restful风格应该是POST请求,但是经常使用的curl指令,如curl http://xxxx:xxx则默认是GET请求,因此又在搜索引擎上查询curl相关请求方法的指令,发现还挺丰富的,因此今天将这部分总结成一个文章,以便后续的使用。

1 初步介绍

curl主要使用C/C++编写,是一个开源的命令行工具,用于传输使用URL语法指定的数据。

支持的网络协议

文件、FTP、FTPS、MQTT、POP3、POP3S、RTMP、RTMPS、RTSP、SCP、SFTP、SMB、SMBS、SMTP、SMTPS、TELNET 和TFTP

支持HTTP情况

curl 支持 SSL 证书、HTTP POST、HTTP PUT、基于 HTTP 表单的上传、代理、HTTP/2、HTTP/3、cookie、用户+密码身份验证(Basic、Plain、Digest、CRAM-MD5、SCRAM-SHA、 NTLM、Negotiate 和 Kerberos)、文件传输恢复、代理隧道等。

2 安装curl工具

2.1 Linux
# Ubuntu
apt install curl
# CentOS
yum install curl
2.2 Windows

下载:https://curl.se/windows/

下载完成后配置环境变量即可

2.3 Mac OS
brew install curl
2.4 Docker
docker run -it --rm curlimages/curl www.example.com
2.5 验证安装

3 接口环境搭建和curl的使用

3.1 接口搭建

为了方便我们本次实验就使用Spring Boot搭建Http接口吧

@RestController
@RequestMapping("/hello")
public class CurlController {
    @GetMapping("/get")
    public Object get() {
        return "This is GET Method API.";
    }
    @PostMapping("/post")
    public Object post(@RequestParam("id") Integer id, @RequestParam("name") String name) {
        return "This is POST Method API,Your name is " + name + " and id is " + id + ".";
    }
    @PutMapping("/put")
    public Object put() {
        return "This is PUT Method API.";
    }
    @PostMapping("/postJSON")
    public Object postJSON(@RequestBody String str)   {
        System.out.println(str);
        return "This is POST Method API,Your Req(JSON) is " + str + ".";
    }
    @DeleteMapping("/delete/{id}")
    public Object delete(@PathVariable("id") String id) {
        return "This is DELETE Method API,Your ID is " + id+ ".";
    }
}
3.2 curl简单使用
3.2.1 GET请求
C:\Users\sb_curl>curl http://localhost:8080/hello/get
This is GET Method API.
3.2.2 POST请求

(1)一般POST请求

C:\Users\sb_curl>curl -X POST http://localhost:8080/hello/post -d "id=1&name=zs"
This is POST Method API,Your name is zs and id is 1.
  • -X:代表指定请求方法
  • -d:代表请求的数据

(2)带JSON参数的POST请求

C:\Users\sb_curl>curl -H "Content-Type:application/json" -X POST -d '{"uid":"123"}' http://127.0.0.1:8080/hello/postJSON
This is POST Method API,Your Req(JSON) is '{uid:123}'.
  • -H:代表请求头
3.2.3 PUT请求
C:\Users\sb_curl>curl -X PUT http://localhost:8080/hello/put
This is PUT Method API.
3.2.4 DELETE请求
C:\Users\sb_curl>curl -X DELETE http://localhost:8080/hello/delete/1
This is DELETE Method API,Your ID is 1.

4 结语

PS:注意事项分享下

因为把String类型改成了Object类型,查了好长时间,debug了好几次都没发现正确的解决方式,最后看见之前的代码才反应过来…

OK,文章到这里就结束了,本文只分享了最常用最简单的curl的使用,日常测试HTTP接口应该够用,当然其他更复杂的操作需要读者朋友按需学习,Bye~

相关文章
|
2月前
|
监控 安全 测试技术
《Eolink 征文活动- -RESTful接口全解测试-全方位了解Eolink-三神技超亮点》
《Eolink 征文活动- -RESTful接口全解测试-全方位了解Eolink-三神技超亮点》
66 0
|
3天前
|
JSON 测试技术 API
Python的Api自动化测试使用HTTP客户端库发送请求
【4月更文挑战第18天】在Python中进行HTTP请求和API自动化测试有多个库可选:1) `requests`是最流行的选择,支持多种请求方法和内置JSON解析;2) `http.client`是标准库的一部分,适合需要低级别控制的用户;3) `urllib`提供URL操作,适用于复杂请求;4) `httpx`拥有类似`requests`的API,提供现代特性和异步支持。根据具体需求选择,如多数情况`requests`已足够。
9 3
|
5天前
Swagger基本使用与RestTemplate发送http接口测试
Swagger基本使用与RestTemplate发送http接口测试
15 1
|
2月前
|
开发框架 JSON .NET
初学者不会写接口怎么办?微软Visual Studio 2022无脑式API接口创建——Swagger一键导入APIKit快速测试
初学者不会写接口怎么办?微软Visual Studio 2022无脑式API接口创建——Swagger一键导入APIKit快速测试
78 0
|
2月前
|
JSON 前端开发 测试技术
接口管理测试繁琐复杂?何不试试Eolink
接口管理测试繁琐复杂?何不试试Eolink
25 0
|
18天前
|
Java
java原生发送http请求
java原生发送http请求
|
25天前
|
网络协议 Linux iOS开发
推荐:实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求
推荐:实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求
56 1
|
1月前
|
编解码 测试技术 索引
性能工具之 Jmeter 使用 HTTP 请求编写 HLS 脚本
在我们简要介绍了 HLS 协议的基础知识,接下来我们详细介绍一种使用 Jmeter 编写压测 HLS 协议脚本的方法。
73 1
性能工具之 Jmeter 使用 HTTP 请求编写 HLS 脚本
|
1月前
|
JSON 数据格式
第三方系统或者工具通过 HTTP 请求发送给 ABAP 系统的数据,应该如何解析试读版
第三方系统或者工具通过 HTTP 请求发送给 ABAP 系统的数据,应该如何解析试读版
27 0
|
7天前
|
安全 Java 网络安全
Servlet 教程 之 Servlet 客户端 HTTP 请求 2
Servlet教程介绍了如何在Servlet中处理HTTP请求,包括获取Cookie、头信息、参数、Session等。方法如:`getCookies()`、`getAttributeNames()`、`getHeaderNames()`、`getParameterNames()`等。还能获取身份验证类型、字符编码、MIME类型、请求方法、远程用户信息、URL路径、安全通道状态以及请求内容长度等。此外,可通过`getSession()`创建或获取Session,并以`Map`形式获取参数。
21 8