使用curl进行Http接口请求


使用curl进行Http接口请求

需求场景

在日常测试工作中,偶尔需要在命令行中进行请求参数,我遇到的测试场景:

  1. 限制在服务器中访问的http接口

    一般是用于手动触发定时任务代码, 可以提前得知测试结果.而这种接口为了安全考虑,往往会禁止外部访问,只能内部使用linux命令请求

  2. 快速测试mock接口

    为了测试mock的接口,服务器能否正常访问,直接在服务器进行接口请求

上述场景目前不存在太复杂的接口请求, 本文仅记录curl的简单用法

基本概念

curl, 即 Client URL工具, 用于在命令行进行web服务器请求;

  • Window Command 及 Linux Terminal 均可使用

  • 功能强大,Postman能做的请求,curl均可实现

  • 但实际运用上, 代码敲得太累而且不能保存请求重复使用,只用于简单接口临时测试

实战

增删改查

curl -X ${大写的请求方法} ${请求url}

$ curl -X POST https://mock.presstime.cn/mock/62a0476b1a23490028bcb5ef/test/test
$ curl -X DELETE  https://mock.presstime.cn/mock/62a0476b1a23490028bcb5ef/test/test
$ curl -X PUT https://mock.presstime.cn/mock/62a0476b1a23490028bcb5ef/test/ticket_status
$ curl -X GET https://mock.presstime.cn/mock/62a0476b1a23490028bcb5ef/test/test

传递请求头及负载

curl -d $payload -H $req_header -X ${大写的请求方法} ${请求url}

  • 需要注意的是请求数据形式一定要与请求头Content-Type一致

    (而Postman中会根据你的数据类型自动变更请求头)

$ curl -d '{"org_code":"test","user_name":"superadmin","password":"test","is_home_page":false}' -H 'Content-Type: application/json' -X POST  https://mock.presstime.cn/mock/api/authorize/v2/token/

下载文件

curl -O $download_url

相当于linux的wget, 通过链接下载文件并且显示下载进度,

在下载一些面向linux的下载链接时(如mermaid), 这个命令很有用

$ curl -O https://unpkg.com/browse/mermaid@9.0.0/dist/mermaid.min.js   
>>
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 11.7M    0 11.7M    0     0  1120k      0 --:--:--  0:00:10 --:--:-- 1840k

使用总结

优点:

  1. 命令行可使用,操作系统自带
  2. 可方便的整合在代码中

缺点

  1. 无法重复使用接口信息
  2. 无请求填写辅助功能
  3. 复制粘贴麻烦

总结

特殊场景使用,日常接口测试还是得Postman


Author: Feny Lau
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source Feny Lau !
  TOC