常用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.mzph.cn/news/44607.shtml

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

相关文章

19万字智慧城市总体规划与设计方案WORD

导读:原文《19万字智慧城市总体规划与设计方案WORD》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 感知基础设施 感知基础设施架构由感知范围、感知手…

正演的数值模拟(零基础,学习中)

摘要: 本贴从零开始学习正演的数值模拟方法. 1. 偏微分基础 引例: 物体从一维坐标的原点开始移动, 在 t t t 时刻, 它在坐标轴的位置由函数 s ( t ) s(t) s(t) 确定, 则速度为位置变化量与时间的比值: v ( t ) d s ( t ) d t lim ⁡ Δ t → 0 s ( t Δ t ) − s ( t )…

19-普通组件的注册使用

普通组件的注册使用-局部注册 一. 组件注册的两种方式:1.局部注册:只能在注册的组件内使用 (1) 创建 vue 文件(单文件组件) (2) 在使用的组件内导入,并注册 components:{ 组件名: 组件对象 } // 导入需要注册的组件 import 组件对象 from.vue文件路径 import HmHeader from ./…

使用 HTML、CSS 和 JavaScript 创建实时 Web 编辑器

使用 HTML、CSS 和 JavaScript 创建实时 Web 编辑器 在本文中,我们将创建一个实时网页编辑器。这是一个 Web 应用程序,允许我们在网页上编写 HTML、CSS 和 JavaScript 代码并实时查看结果。这是学习 Web 开发和测试代码片段的绝佳工具。我们将使用ifram…

如何找到一个数的所有质因数,以及如何快速判断一个数是不是质数

前情介绍 今天遇到一个需求&#xff1a;找到一个数所有的质因数。 初步解决 先定义一个判断质数的函数&#xff1a; def is_Prime(number):i 2count 0while i < number:if number % i 0 :count 1i 1if count > 0:return Falseelse:return True 接着定义一个寻找质…

【云原生】【k8s】Kubernetes+EFK构建日志分析安装部署

目录 EFK安装部署 一、环境准备&#xff08;所有主机&#xff09; 1、主机初始化配置 2、配置主机名并绑定hosts&#xff0c;不同主机名称不同 3、主机配置初始化 4、部署docker环境 二、部署kubernetes集群 1、组件介绍 2、配置阿里云yum源 3、安装kubelet kubeadm …

模型数据处理-数据放入 session和@ModelAttribute 实现 prepare 方法详细讲解

&#x1f600;前言 本文详细讲解了模型数据处理-数据放入 session和ModelAttribute 实现 prepare 方法详细讲解 &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大家&#xff0c…

企业数字化转型大数据湖一体化平台项目建设方案PPT

导读&#xff1a;原文《企业数字化转型大数据湖一体化平台项目建设方案PPT》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 喜欢文章&#xff0c;您可以点赞评论转发…

知识体系总结(九)设计原则、设计模式、分布式、高性能、高可用

文章目录 架构设计为什么要进行技术框架的设计 六大设计原则一、单一职责原则二、开闭原则三、依赖倒置原则四、接口分离原则五、迪米特法则&#xff08;又称最小知道原则&#xff09;六、里氏替换原则案例诠释 常见设计模式构造型单例模式工厂模式简单工厂工厂方法 生成器模式…

设计模式篇---抽象工厂(包含优化)

文章目录 概念结构实例优化 概念 抽象工厂&#xff1a;提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无须指定它们具体的类。 工厂方法是有一个类型的产品&#xff0c;也就是只有一个产品的抽象类或接口&#xff0c;而抽象工厂相对于工厂方法来说&#xff0c;是有…

Android Studio实现解析HTML获取图片URL,将URL存到list,进行列表展示

目录 效果build.gradle(app)添加的依赖(用不上的可以不加)AndroidManifest.xml错误代码activity_main.xmlitem_image.xmlMainActivityImage适配器ImageModel 接收图片URL效果 build.gradle(app)添加的依赖(用不上的可以不加) dependencies {implementation com.square…

Python可视化在量化交易中的应用(11)_Seaborn折线图

举个栗子&#xff0c;用seaborn绘制折线图。 Seaborn中折线图的绘制方法 在seaborn中&#xff0c;我们一般使用sns作为seaborn模块的别名&#xff0c;因此&#xff0c;在下文中&#xff0c;均以sns指代seaborn模块。 seaborn中绘制折线图使用的是sns.lineplot()函数&#xff…

中国剩余定理及扩展

目录 中国剩余定理解释 中国剩余定理扩展——求解模数不互质情况下的线性方程组&#xff1a; 代码实现&#xff1a; 互质&#xff1a; 非互质&#xff1a; 中国剩余定理解释 在《孙子算经》中有这样一个问题&#xff1a;“今有物不知其数&#xff0c;三三数之剩二&#x…

【C++】做一个飞机空战小游戏(十)——子弹击落炮弹、炮弹与飞机相撞

[导读]本系列博文内容链接如下&#xff1a; 【C】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动【C】做一个飞机空战小游戏(三)——getch()函数控制任意造型飞机图标移动 【C】做一个飞…

Mybatis的SqlSource SqlNode BoundSql

学习链接 MyBatis SqlSource解析 【Mybatis】Mybatis源码之SqlSource#getBoundSql获取预编译SQL Mybatis中SqlSource解析流程详解 Mybatis TypeHandler解析 图解 Mybatis的SqlSource&SqlNode - processon DynamicSqlSource public class DynamicSqlSource implement…

极致鸿蒙2.0——华为MatePad系列安装AidLux,一个自带vscode的Python编译环境

看着刚刚人入手的华为鸿蒙系统MatePad11平板&#xff0c;是如此的美轮美奂&#xff0c;但是总感觉少了点什么&#xff0c;少了点什么呢&#xff1f;是编程环境&#xff0c;我爱MatePad&#xff0c;也爱编程&#xff0c;那如果可以在MatePad上编程&#xff0c;会发生什么&#x…

SpringBoot、Java 使用 Jsoup 解析 HTML 页面

使用 Jsoup 解析 HTML 页面 什么是 Jsoup&#xff1f; Jsoup 是一个用于处理 HTML 页面的 Java 库&#xff0c;它提供了简单的 API&#xff0c;使得从 HTML 中提取数据变得非常容易。无论是获取特定标签的内容还是遍历整个页面的元素&#xff0c;Jsoup 都能轻松胜任。 如何使…

【ARM Linux 系统稳定性分析入门及渐进12 -- GDB内存查看命令 “x“(examine)】

文章目录 gdb 内存查看命令 examine 上篇文章&#xff1a;ARM Linux 系统稳定性分析入门及渐进11 – GDB( print 和 p 的使用| 和 &#xff1a;&#xff1a;的使用|ptype|{&#xff1c;type&#xff1e;} &#xff1c;addr&#xff1e; ) gdb 内存查看命令 examine examine是…

c语言——判断,判断是否是字母

//判断&#xff0c;判断是否是字母 #include<stdio.h> #include<stdlib.h> int main() {char c;printf("输入字符&#xff1a;");scanf("%c",&c);if((c>a&&c<z)||(c>A&&c<Z)) //a~z的ASCLL区间是97-122&…

Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三)

文章目录 Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三)前情提要客户端部分 Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三) 前情提要 单例泛型类 using System.Collections; using System.Collections.Generic; …