常用curl参数及样例讲解

news2024/11/19 9:22:59

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.coloradmin.cn/o/898437.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

以创新点亮前路,戴尔科技开辟数实融合新格局

编辑:阿冒 设计:沐由 2023年,对于戴尔科技而言是特殊的一年,这是戴尔科技进入中国市场第25个年头——“巧合”的是,这25年也是中国产业经济发展最快,人们工作与生活发生变化最大的四分之一个世纪。 2023年&…

C# 观察者模式

一、概述 观察者模式是一种常用的设计模式,它属于行为型模式。在C#中,观察者模式通过定义一种一对多的依赖关系,使得当一个对象的状态发生变化时,所有依赖于它的对象都会得到通知并自动更新。这种模式可以实现松耦合,…

关键点检测中的对象关键点相似度

在不断发展的计算机视觉领域,理解物体的精确结构和姿态至关重要。无论是检测杂乱场景中的特定物体,还是实时分析人体姿势,关键点都起着至关重要的作用。对象上的这些独特点通常对应于角、边缘或其他可识别部分,用作识别和跟踪对象的锚点。但是我们如何衡量这些检测到的关键…

Java版本说明

java7 当谈到Java 7对应的JDK版本时,Java SE 7是Java 7的官方JDK版本。Java SE(Standard Edition)是Java平台的标准版本,它提供了Java编程语言的核心库和工具。 Java SE 7的JDK版本是JDK 7。你可以通过以下链接下载Java SE 7的J…

最新AI系统ChatGPT程序源码/支持GPT4/自定义训练知识库/GPT联网/支持ai绘画(Midjourney)+Dall-E2绘画/支持MJ以图生图

一、前言 SparkAi系统是基于国外很火的ChatGPT进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。 那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧&#xff01…

Redis中常见的缓存穿透、缓存击穿、缓存雪崩、缓存预热解决方案

文章目录 一、缓存穿透1. 什么是缓存穿透2. 解决方案2.1 无效的key存放到Redis2.2 引入布隆过滤器2.3 如何选择: 二、缓存击穿1. 什么是缓存击穿2. 解决方案 三、缓存雪崩1. 什么是缓存雪崩2. 解决方案2.1 均匀过期2.2 热点数据缓存永远不过期2.3 采取限流降级的策略…

注册中心/配置管理 —— SpringCloud Consul

Consul 概述 Consul 是一个可以提供服务发现,健康检查,多数据中心,key/Value 存储的分布式服务框架,用于实现分布式系统的发现与配置。Cousul 使用 Go 语言实现,因此天然具有可移植性,安装包仅包含一个可执…

【C++学习手札】一文带你认识C++虚继承​​

食用指南:本文在有C基础的情况下食用更佳 🍀本文前置知识:C虚函数(很重要,内部剖析) ♈️今日夜电波:僕らのつづき—柊優花 1:06 ━━━━━━️💟──────── 3:51 …

将Nginx源码数组结构(ngx_array.c)和内存池代码单独编译运行,附代码

在上面一篇的基础上把Nginx源码数组结构也摘录下来,也增加了测试代码,编译运行。 https://blog.csdn.net/katerdaisy/article/details/132358883 《将nginx内存池代码单独编译运行,了解nginx内存池工作原理,附代码》 核心代码&…

C语言刷题训练DAY.8

1.计算单位阶跃函数 解题思路&#xff1a; 这个非常简单&#xff0c;只需要if else语句即可完成 解题代码&#xff1a; #include <stdio.h>int main() {int t 0;while(scanf("%d",&t)!EOF){if (t > 0)printf("1\n");else if (t < 0)pr…

LVS-DR集群(一台LVS,一台CIP,两台web,一台NFS)的构建以及LVS-DR模式工作原理和特点

一.LVS-DR工作模式原理和特点 1.工作模式 2.模式特点 二.构建环境 1.五台关闭防火墙&#xff0c;关闭selinux&#xff0c;拥有固定IP&#xff0c;部署有http服务的虚拟机&#xff0c;LVS设备下载ipvsadm工具&#xff0c;NFS 设备需要下载rpcbind和nfs-utils 2.实现功能 3…

win11调整屏幕亮度

1.右键打开 2.显示更多选项 3.NVIDIA控制面板 4.调整桌面颜色设置 5.亮度

linux 搭建 nexus maven私服

环境&#xff1a; 必须在 linux 环境下&#xff0c;并且已安装 jdk 下载 访问百度网盘链接: https://pan.baidu.com/s/1fHGmQ2jRUAsXyPom2KL8Mw?pwd0000 提取码: 0000 官网下载 Download Archives - Repository Manager 3 (sonatype.com) 部署 &#xff1a; 进入目录&#…

Echarts:象形柱图实现水塔水位的动画、水球图和液位柱子图

一、象形柱图 1、vue中使用象形柱图 效果图&#xff1a; 2、代码实现 <template><div :class"className" :style"{height:height,width:width}"/></template> <script>import echarts from echarts require(echarts/theme/macar…

论文浅尝 | KRACL-利用图上下文和对比学习的稀疏KG补全

笔记整理&#xff1a;李娟&#xff0c;浙江大学博士&#xff0c;研究方向为知识图谱表示学习 论文链接&#xff1a;https://arxiv.org/pdf/2208.07622.pdf 代码链接&#xff1a;https://github.com/TamSiuhin/KRACL 介绍 知识图谱&#xff08;KG&#xff09;通常是不完整的&…

注意力机制——SENet原理详解及源码解析

&#x1f34a;作者简介&#xff1a;秃头小苏&#xff0c;致力于用最通俗的语言描述问题 &#x1f34a;专栏推荐&#xff1a;深度学习网络原理与实战 &#x1f34a;近期目标&#xff1a;写好专栏的每一篇文章 &#x1f34a;支持小苏&#xff1a;点赞&#x1f44d;&#x1f3fc;、…

【ROS】话题通信--从理论介绍到模型实现(C++)

1.简单介绍 话题通信是ROS中使用频率最高的一种通信模式&#xff0c;话题通信是基于发布订阅模式的&#xff0c;也即:一个节点发布消息&#xff0c;另一个节点订阅该消息。像雷达、摄像头、GPS… 等等一些传感器数据的采集&#xff0c;也都是使用了话题通信&#xff0c;换言之…

windows 配置 Kerberos客户端访问CDH组件

0.背景 想在window机器上访问内网集群的CDH组件(如solr的webui),由于集群配置了Kerberos验证,所以需要配置相关,否则打开webui会有401未授权错误 1. 流程 1.1 windows安装Kerberos客户端 -下载 Windows系统客户端去下面网站按需下载 http://web.mit.edu/kerberos/dist/ 需要…

【力扣】496. 下一个更大元素 I <单调栈、模拟>

【力扣】496. 下一个更大元素 I nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。给你两个没有重复元素的数组 nums1 和 nums2 &#xff0c;下标从 0 开始计数&#xff0c;其中nums1 是 nums2 的子集。   对于每个 0 < i <…

喜报 | 擎创再度入围IDC中国FinTech 50榜单

8月16日&#xff0c;2023年度“IDC中国FinTech 50”榜单正式揭晓&#xff0c;擎创科技继2022年入选该榜单后&#xff0c;再次以创新者姿态成功入选&#xff0c;并以技术赋能业务创新&#xff0c;成为中国金融科技领域创新与活力的重要贡献者。 “IDC中国FinTech 50”旨在评选出…