常用curl参数及样例讲解

1 缘起

后端/后台项目开发过程中,有两个阶段的接口测试和验证,自测阶段,通过Postman构建请求,
自建一些参数,测试功能以及边界条件,这些都是可以自行掌控的,当完成功能验证与前端对接时,
前端会根据接口文档进行调试,当请求接口遇到问题时,需要和后端进行验证,前端在浏览器端获取到的完整接口请求即curl提供给后端/后台开发人员,后端/后台开发人员可以直接使用curl进行接口验证,无需重新将curl转为Postman中的请求,当然,Postman提供了curl转成请求的功能,方便持久化。在使用curl的过程中,发现有些参数还是没有很清晰是做什么的,于是,抽时间整理了一下常用请求对应的curl参数,分享如下,帮助提高开发效率。
虽然curl可以直接通过浏览器提供,但是,自行构建时,仍需熟悉相关参数才能快速构建,
当然,Postman也可以直接根据构建的请求生成curl,本文旨在补充知识。

2 curl

在这里插入图片描述
图片来源:https://curl.se/

curl是通过URL传输数据的命令行工具和库。支持的协议有:HTTP、HTTPS、FTP、FTPS、TELNET和TFPT等等。
用户通过终端执行curl命令与远程服务器交换数据,同时,curl支持文件上传、断点续传和代理等高级功能。

官网:https://curl.se/
参数:https://curl.se/docs/manpage.html

2.1 常用参数

这里列出了最常用的请求方式所使用的curl参数,包括:

  • 请求头
  • 表单
  • 请求体:JSON/x-www-form-urlencoded

参数简要描述及样例见下表:

序号参数缩写简要描述
1--location-L用于重新请求URL,当配置的URL定向到其他地址时,会重新发送请求到新的URL
2--header-H配置请求头参数,如--header 'm-header-name: m-value'
3--basic配置Basic认证参数,结合user参数,当然,配置Basic认证也可以直接使用请求头的方式,如--header 'Authorization: Basic value'
4--user-u配置用户认证信息,结合Basic使用,如--basic --user username:password
5--oauth2-bearer配置Bearer认证,如--oauth2-bearer 'token-value',同样可以直接使用请求头方式,如--header 'Authorization: Bearer value'
6--form-F配置表单数据
7--data-d配置请求体为JSON的数据
8--data-urlencode配置请求体为x-www-form-urlencoded格式的数据

2.2 测试样例

2.2.1 请求头:header

2.2.1.1 普通header参数

普通header参数直接使用--header参数,数据格式为key: value,样例如下:

curl --location 'http://localhost:9121/api/v1/common/header' \
--header 'token: token-token'

测试结果如下:
在这里插入图片描述

2.2.1.2 Basic认证header参数

Basic认证使用header参数时,固定的key为Authorization,值为Basic配合用户名和密码加密后的数据,
固定格式:--header 'Authoriztion: Basic value',样例如下:

curl --location 'http://localhost:9121/api/v1/common/auth' \
--header 'Authorization: Basic eGlhb2h1YToxMjM0NTY='

测试结果如下:
在这里插入图片描述

2.2.1.3 Bearer认证header参数

Bearer认证参数固定键为Authorization,值为Bearer拼装Token,
固定格式为:--header 'Authorization: Bearer value',样例如下:

curl --location 'http://localhost:9121/api/v1/common/auth' \
--header 'Authorization: Bearer NjMyZDc3YTBlZTliYjBlNDI3YTU1OWJhOmR5eHA2MmotblB2aWZubExTY3dVUUVZVmlhWEQ3bGJo'

测试结果如下:
在这里插入图片描述

2.2.2 Basic认证参数

Basic认证参数直接使用时需要结合user参数,显式地使用用户名和密码。
固定格式为:--basic --user username:password,样例如下:

curl --location 'http://localhost:9121/api/v1/common/auth' \
--basic --user xiaohua:123456

测试结果如下:
在这里插入图片描述

2.2.3 Bearer认证参数

Bearer认证参数直接使用固定格式为:
--oauth2-bearer 'value',样例如下:

curl --location 'http://localhost:9121/api/v1/common/auth' \
--oauth2-bearer 'NjMyZDc3YTBlZTliYjBlNDI3YTU1OWJhOmR5eHA2MmotblB2aWZubExTY3dVUUVZVmlhWEQ3bGJo'

测试结果如下:
在这里插入图片描述

2.2.4 Path参数

Path参数即数据直接作为URL的一部分,没有特别的参数,直接使用URL即可,
这里使用--location仅是为了保证URL重定向后可以重新请求URL,无特别说明可以不使用该参数,
固定的格式直接在curl后面添加完整URL,固定格式:curl URL,样例如下:

curl --location 'http://localhost:9121/api/v1/common/path/123456'

测试结果如下:
在这里插入图片描述

2.2.5 Params参数

在URL中拼接参数时,和Path参数一样,只需提供完整的URL,
固定格式:curl URL,样例如下:

curl --location 'http://localhost:9121/api/v1/common/params?token=token-token&username=user-name'

测试结果如下:
在这里插入图片描述

2.2.6 Body参数

请求体参数常用的三种形式:表单/JSON/x-www-form-urlencoded。

2.2.6.1 form-data

表单数据分为普通的键值对,和文件传输表单。

  • 键值对form-data数据
    键值对的表单固定格式为:--form 'key-name="value"',样例如下:
curl --location 'http://localhost:9121/api/v1/common/form-data' \
--form 'token="token-token"' \
--form 'username="user-name"'

测试结果如下:
在这里插入图片描述

  • file form-data数据
    文件表单数据参数有些不同,需要添加固定的数据@,固定格式:
    --form 'key=@file-path',样例如下:
curl --location 'http://localhost:9121/api/v1/common/form-data/file' \
--form 'file=@D:/workfile/snapshot/写作-1.png'

测试结果如下:
在这里插入图片描述

curl --location 'http://localhost:9121/api/v1/common/form-data/file' \
--form 'file=@"D:/workfile/snapshot/写作-1.png"'

在这里插入图片描述
注意:这里的文件路径拼装有两种方式,添加双引号和不添加双引号,无比根据自己的操作系统确定是否添加。
有一次使用Linux服务器,自动化部署服务时,调用Azkaban接口,上传文件,使用了双引号,上传失败,后来是同事发现了这个,去除双引号才上传成功

2.2.6.2 JSON

JSON格式的请求体数据,固定格式为:--data 'JSON数据',样例如下:

curl --location 'http://localhost:9121/api/v1/common/json' \
--header 'Content-Type: application/json' \
--data '{"token":"token-token","username":"user-name"
}'

测试结果如下:
在这里插入图片描述

2.2.6.3 x-www-form-urlencoded

x-www-form-urlencoded格式的请求体需要使用的参数为data-urlencode,
固定格式为:--data-urlencode 'key=value',样例如下:

curl --location 'http://localhost:9121/api/v1/common/x-www-form-urlencoded' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'token=token-token' \
--data-urlencode 'username=user-name'

测试结果如下:
在这里插入图片描述

3 小结

(1)curl是传输数据的命令行工具;
(2)curl请求HTTP/HTTPS接口时常用的参数:--header/--form/--data/--data-urlencode/--basic/--user/--oauth2-bearer,分别对应:请求头/表单/JSON请求体/x-www-form-urlencoded请求体/Basic认证/Bearer认证;
(3)curl常用于前后端接口验证,无需重新构建请求(如Postman构建),直接使用curl即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/73519.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ForkJoinPool继承类RecursiveTask

package com.cdkj.project.syn.common;/*** author YUFEI* ClassName SearchFiles* description: TODO* date 2023年05月18日* version: 1.0*/import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ForkJoinPool; import jav…

Spring Boot(六十四):SpringBoot集成Gzip压缩数据

1 实现思路 2 实现 2.1 创建springboot项目 2.2 编写一个接口,功能很简单就是传入一个Json对象并返回 package com.example.demo.controller;import com.example.demo.entity.Advertising; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframewo…

QT处理日志文件

由于实际生产需要,软件系统的运行,会产生大量的日志文件,有时候一天就能产生超过百万条log记录,那么为了能够处理日志文件,查询并且找到我们想要的报错信息,因此不得不考虑怎么实现,打开大日志文…

C++头文件

C头文件 一般头文件特殊头文件windows.hbits/stdc.h 一般头文件 C头文件是一种包含预定义函数、类和变量声明的文件。它们通常用于在源代码文件中引入外部库或模块的功能。 头文件的作用是提供程序所需的声明信息,以便在源代码文件中使用这些声明。当你在源代码文…

【LeetCode75】第二十九题 删除链表的中间节点

目录 题目: 示例; 分析: 代码: 题目: 示例; 分析: 给我们一个链表,让我们把链表中间的节点删了。 那么最直观最基础的办法是遍历两边链表,第一遍拿到链表长度,第二次把链表中间节点删了。 这个暴力做法我没事过…

Linux/centos上如何配置管理NFS服务器?

Linux/centos上如何配置管理NFS服务器? 1 NFS基础了解1.1 NFS概述1.2 NFS工作流程 2 安装和启动NFS服务2.1 安装NFS服务器2.2 启动NFS服务 3 配置NFS服务器和客户端3.1 配置NFS服务器3.2 配置NFS客户端 4 实际示例4.1 基本要求4.2 案例实现 1 NFS基础了解 NFS&…

国产之光:讯飞星火最新大模型V2.0

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的…

微信小程序:函数节流与函数防抖

目录 问题引入: 定义 解决方案:函数节流 一、案例举例 1.页面展示 2.search.wxml标签展示 3.search.js展示 4.结果展示 二、函数节流解决问题 1.函数 2.实例应用 三、函数防抖解决问题 1.函数 2.原理 3.应用场景 4.应用实例 总结 问题引入…

Ceph入门到精通-Aws Iam(user,role,group,policy,resource)架构图和快速入门

-- Aws Iam(identity,user,role,group,policy,resource,)架构图和快速入门. 【官网】:Cloud Computing Services - Amazon Web Services (AWS) 应用场景 aws 云服务运维,devops过程中经常涉及各项服务,权限,角色的处理。 为了更好的使用各项…

Jenkins+Jmeter集成自动化接口测试并通过邮件发送测试报告

一、Jenkins的配置 1、新增一个自由风格的项目 2、构建->选择Excute Windows batch command(因为我是在本地尝试的,因此选择的windows) 3、输入步骤: 1. 由于不能拥有相同的jtl文件,因此在每次构建前都需要删除jtl…

python+django+mysql项目实践五(信息搜索)

python项目实践 环境说明: Pycharm 开发环境 Django 前端 MySQL 数据库 Navicat 数据库管理 信息搜素 输入内容进行搜索,内容有文本类和时间类 文本类需要模糊搜索,包含即检索 时间类需要选取时间范围内的内容 views 利用Q完成对指定内容的检索 检索后按检索内容更新…

C++音乐播放系统

C音乐播放系统 音乐的好处c发出声音乐谱与赫兹对照把歌打到c上 学习c的同学们都知道,c是一个一本正经的编程语言,因该没有人用它来做游戏、做病毒、做…做…做音乐播放系统吧!! 音乐的好处 提升情绪:音乐能够影响我们…