curl命令调用接口,curl命令使用

http://www.itjxue.com  2023-01-13 07:37  来源:未知  点击次数: 

怎么判断curl调用接口返回成功:响应码

背景:最近高可用测试,双机倒换后,需要统计多久倒换结束了。我的方法是通过业务来测试,客户端和服务端都能正常访问了,对外提供服务的能力肯定就提供了。

因为不知道什么时候倒换开始和结束,需要每一秒都发curl请求,然后统计每次调用接口的时间和响应结果,并根据响应结果写入文件,方便统计和分析测试结果。

我选择简单的shell脚本,上手快。Python的话需要环境上安装相应软件,请求的响应更容易处理更便于处理。本文选择shell,curl来发请求。

1) #! /bin/bash

# 指脚本使用/bin/bash来解释执行,#!是对脚本的解释器程序路径。标记为#!/bin/sh的脚本不应使用任何POSIX没有规定的特性 (如let等命令, 但#!/bin/bash可以)。

2) while循环的格式

while expression

do

command

command

```

done

或while [条件判断式]

do

程序

done

举例:计数器控制的while循环

#!/bin/bash

int=1

while [ $int=5 ]

do

? ? echo $int

? ? let "int++"

done

3) if判断

if [ 条件判断一 ] (||) [ 条件判断二 ]; then

elif [ 条件判断三 ] (||) [ 条件判断四 ]; then

else

? 执行第三段内容程式

fi

4) curl

curl -I -s --connect-timeout 5 -m 5 -w "%{http_code}" -o /dev/null?

200

-I/--head 仅返回消息头部,使用HEAD请求

-s/--slient 减少输出的信息,比如进度

--connect-timeout seconds 指定尝试连接的最大时长

-m/--max-time seconds 指定处理的最大时长

-w "参数"? 自定义curl的输出

-o/--output file 指定输出文件名称

#!/bin/bash

#根据测试背景填写连接超时时长,单位秒

ct=5

#根据测试背景填写响应最大时长,单位秒

rm=5

#根据测试背景填写URL

uri=""

i=1

while [ $i=36000 ]

do

? ? echo? `date` === $i === get-baidu.log

? ? let i++

? ? resp=`curl -I -s --connect-timeout $ct -m? $rm -w "%{http_code}" -o /dev/null? $url`

? ? ? if [ $resp==200 ]; then

? ? ? ? ? ? ? echo? `date`? == $i ==$resp? get-baidu.log

? ? ? else

? ? ? ? ? ? echo? `date`? == $i ==$resp? get-baidu.log

? ? ? ? ? ? echo? `date`? == $i ==$resp? get-baidu-fail.log

fi

done

找个和待测试环境网络可达的Linux环境,修改相关信息,直接运行即可。

注意uri是get请求,如果是post需要修改curl。

如果需要token认证则根据待测系统的实现进行携带token , 修改curl命令即可。

如果需要ssl证书,则携带相应证书,修改curl命令即可。

如果是ipv6的URL,curl中带上-6 -g参数。

计算响应时长(本例子是双机倒换时长)日志查看,从 get-baidu-fail.log找到失败点,在总的日志中找到相应记录,进行计算即可。

记录:http接口测试必学之curl命令

curl测试GET接口

url参数可以直接写到url中,此时url最好用引号引起来

curl测试带参数get请求

表单类Post请求

curl可以通过-d指定 请求数据(包含-d参数时,默认为Post请求),如

JSON格式Post请求

curl可以用个-H指定header,多个header要使用多个-H

带Cookie的请求

Cookie属于header的一项,我们可以携带抓取到的Cookie来请求需要登录的接口,如:

可以使用-v参数查看请求详情

使用curl命令测试端口

约定接口一般包括以下数据

如:

上面的命令的意思就是发送一个POST请求传递

"title=hellocontent=worlddescription=jirengu"字段并且带上connect.sid...这个cookie然后显示响应头

POST /auth/register

功能: 用户注册

提交参数

返回数据

测试

POST /auth/login

功能: 用户登录

提交参数

返回数据

测试命令

GET /auth

功能: 判断用户是否登录

提交参数: 无

返回数据

测试命令

GET /auth/logout

功能: 注销登录

提交参数: 无

返回数据:

测试命令

Curl请求REST接口技巧

接口调试过程中有很多的REST接口请求工具,例如 Postman 、 Postwoman 这些图形化工具可以简化接口请求,在服务器上调试过程中,由于缺少图形化界面,这里使用命令行变成了相对可行性的方案。

在 curl 中可以使用 -H 参数提交请求头参数

详细请求头可以参考

这里针对Cookie的设置做出特别说明

这里推荐方案二

更详细参数可以参考:

(责任编辑:IT教学网)

更多

推荐JSP教程文章