HTTP 请求方法 GET/POST/PUT/DELETE
Web HTTP基础知识
HTTP请求是什么?
HTTP超文本传输协议,是确保服务器(Server)和客户端(Client)之间的正确通信。
一个请求和响应的过程:
- Request 用户通过浏览器向我们的服务端发起请求。
- Response服务端将客户端请求的资源数据进行响应。
调用接口的方法
请求类型:
- GET 向指定的URL请求资源,可携带参数(明文)。
- POST 向指定的URL提交资源,表单数据提交,数据进行封装(比Get方法安全)。
- PUT 与POST类似,通常用于对资源数据的更新修改。
- DELETE 删除指定的资源。
演示:以baidu为例,用Postman调用一个接口的过程。并结合使用Curl操作。
HTTP常见的错误码
- 1xx : 服务已收到请求,请求者继续执行操作。
- 2xx:请求成功,常见(201)
- 3xx:请求成功,页面发生重定向(301)
4xx:客户端发生了错误
- 常见的是资源找不到了(404)
- 资源请求需要认证认证失败(401)(有些时候需要登入,那么就要传入认证信息,认证信息也就是账号和密码,出现401说明认证有问题,说明账号密码有问题)
- 认证成功但是权限不够(403)
5xx: 服务端发生了错误(客户端请求的参数都是正确的,但是服务端在解析处理的时候发生了错误)
- 网关超时(504)
- 内部错误(500)
- 网关错误(502)
- 服务不可用(503)
请求定位资源 请求方法 GET
http协议使用uri来定位互联网上的资源,这就使得互联网上任意位置资源都能够得到访问。
如果不是访问具体资源,而是对服务器进行请求时,可以使用*星号代替请求的uri。
GET
GET 1.jpg HTTP/1.1
1.jpg就是我们说的uri,1.1是协议版本,前面的GET描述了如何去获取文档资源的一种方式。
http的请求方法不单单时get一种,get只是请求方式当中的一种。
get是用来请求uri描述文档资源,get的报文被服务器解析完之后会返回它想要的响应内容,如果请求的是图片,就会将图片返回。如果访问的是网关程序,会返回执行后的输出结果。(具体资源原样返回,网关程序返回执行结果),这就是get作用,在使用频率上是比较高的。
虽然get也能够传输实体信息,但是和post相比还是弱一些。
域名?a=1&b=2
问号后面的信息使用get方式传输的,那么信息都在url上,如果是重要信息,容易泄漏。其次信息量是有限的,还有二进制文件无法传输,比如要上传图片,视频,音频,不能将其放在url上面。
就算可以放到上面,也是通过另外一种算法,折中的去实现,比如将小的图片进行base64格式的转换,然后放到url上作为参数传给服务器,而且都是小文件,一个二进制文件进行base64格式转换的时候,它的体积要比原样更加大。
上面就是使用get传输实体的不足。
Jenkins作业配置触发器 通过参数触发
Query parameter /invoke?token=TOKEN_HERE 参数
使用插件就生成了这样一个接口,通过这个接口就可以去触发Jenkins
http://139.198.170.122:8080/generic-webhook-trigger/invoke?token=generic-webhook-trigger
{"jobs": {"Gitlab-Generic-Webhook-Trigger": {"regexpFilterExpression": "","triggered": true, #这里为true说明触发了"resolvedVariables": {},"regexpFilterText": "","id": 493,"url": "queue/item/493/"}},"message": "Triggered jobs."
}
如果要传入第二个参数,第一个参数是跟在?号后面,第二个参数会用&符号
http://139.198.170.122:8080/generic-webhook-trigger/invoke?token=generic-webhook-trigger&user=lulei
POST
post:用来传输实体信息的,可以改善上面get不足。
它的信息是放在请求体当中,相对来说不会直观的泄漏,同时信息量要比get大的多,最重要的一点是很方便二进制的传输。get传输实体信息大概4k,而使用post传输实体信息最大的4m。
get和post本质区别是,post虽然传输实体信息,但是不获取读取内容,这点是区别get post请求的关键。
解析POST数据
$:表示所有的body数据
- Jenkins 配置触发器来获取Post参数。
获取所有数据
获取username字段
获取groupname字段
- 客户端发送POST请求, 参数存储在body体中(参考POSTMAN中的样例)
在使用post请求时候,Jenkins里面定义的变量名字可以与json格式里面的变量名字不同,这个变量名字就相当于在Jenkins里面定义的变量,变量的值使用jsonpath语法。
Contributing variables:allData = {"name": "zhangsan","group": {"name" : "jenkins"}
}allData_group_name = jenkinsallData_name = zhangsangroupName = jenkinsuserName =
curl --location --request POST 'http://139.198.170.122:8080/generic-webhook-trigger/invoke?token=generic-webhook-trigger' \
--header 'Content-Type: application/json' \
--data-raw '{"name": "zhangsan","group": {"name" : "jenkins"}
}'
- Jenkinsfile中使用参数
println("所有body数据 --> ${allData}")
println('最外层name ---> $.name' + "${userName}")
println('第二层name ---> $.group1.name' + "${group1Name}")
首先在客户端发起请求,里面包含了数据,Jenkins要想拿到数据和上面两种get,header不一样得使用$符号,$符号代表着整体,通过$.的方式获取里面的值。
说下 GET 和 POST 的区别?
GET 和 POST 本质都是 HTTP 请求,只不过对它们的作用做了界定和适配,并且让他们适应各自的场景。
本质区别:GET 只是一次 HTTP请求,POST 先发请求头再发请求体,实际上是两次请求。
1. 从功能上讲,GET 一般用来从服务器上获取资源,POST 一般用来更新服务器上的资源。
2. 从 REST 服务角度上说,GET 是幂等的,即读取同一个资源,总是得到相同的数据,而 POST 不是幂等的,因为每次请求对资源的改变并不是相同的;进一步地,GET 不会改变服务器上的资源,而 POST 会对服务器资源进行改变。
3. 从请求参数形式上看,GET 请求的数据会附在 URL 之后,即将请求数据放置在 HTTP 报文的 请求头 中,以 ? 分割 URL 和传输数据,参数之间以 & 相连。特别地,如果数据是英文字母/数字,原样发送;否则,会将其编码为 application/x-www-form-urlencoded MIME 字符串(如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用 BASE64 加密,得出如:%E4%BD%A0%E5%A5%BD,其中 %XX 中的 XX 为该符号以 16 进制表示的 ASCII);而 POST 请求会把提交的数据则放置在是 HTTP 请求报文的 请求体 中;
4. 就安全性而言,POST 的安全性要比 GET 的安全性高,因为 GET 请求提交的数据将明文出现在 URL 上,而且 POST 请求参数则被包装到请求体中,相对更安全。
5. 从请求的大小看,GET 请求的长度受限于浏览器或服务器对 URL 长度的限制,允许发送的数据量比较小,而 POST 请求则是没有大小限制的。
还有其他的请求方式
put 它是用来传输文件的,它会将文件内容包含在请求报文的主体当中,然后将内容保存到指定的uri指定的位置上,不带自身验证的功能,任何人都可以通过put上传文件,这样就会导致不安全的因素,所以很多网站都会禁止使用该方法。
如果你想用put方法的话,中间放置一个程序去验证账号主体信息,如果验证通过了,然后再将链接跳转到put上。而且put方式一般在内网使用,不会对外网公开。
header方法:只获取报文的头部,header方式是get方式的阉割版,因为它不获取报文的主体。
而它的作用主要是验证uri的有效性,以及更新时间。
比如在前端当中经常说,要缓存外部资源文件,这样我们就需要知道外部资源文件是否在有效期内,如果有效期内就继续使用,过期就需要重新请求。head方法就能够判断该资源文件是否有效。
delete:删除文件,和put大致一样,同样不具备验证功能,如果想要使用要建立中间桥接机制进行验证,验证之后在进行delete操作。
options:主要是询问服务器所支持的方法。对于网站来说我们经常会禁止put方式和delete方式,在与网站进行交互的时候,就需要提前去询问一下服务器支持什么样的请求方式。如果只支持get那么就会用get和你通信,哪怕是post请求我也尽量转化为get方式。
trace:用于跟踪请求路径,让web服务器端将之前的请求通信完完整整的返回给客户端。
比如说它经常性会使用请求头的一个Max-Forwards =2,每当经历过服务器之后就会将该数字进行-1,直到减为0,那么请求不再转发。会将请求的路径发送给客户端。
就是trace方法,它是用来确定连接过程中发生的一系列操作。也正是这个原因,经常会使用trace方法,进行调试。
connect方法:提供了与代理服务器之间的安全连接,比如说它会使用一个隧道TCP,在TCP之上使用安全套接字SSL,TLS。使用这两种方式将TCP传输的数据进行加密。
它是防止数据经过代理服务器时候,防止代理服务器去劫持数据,起到防止中间人攻击的一种策略。
HTTP 请求方法 GET/POST/PUT/DELETE相关推荐
- 解析HTTP协议六种请求方法,get,head,put,delete,post有什么区别
转载自 解析HTTP协议六种请求方法,get,head,put,delete,post有什么区别 标准Http协议支持六种请求方法,即: 1.GET 2.POST 3.PUT 4.Delete 5. ...
- 网络:HTTP的请求方法
http请求方式 如何发送http有很多种方式,但是最常用的就是POST和GET. 其他的有些出于安全性的考虑一般都不建议使用.那么POST与GET有什么区别呢? 1 使用目标不同: POST与GET ...
- HTTP请求报文结构和请求方法(通俗易懂)!!
HTTP请求报文结构和请求方法(通俗易懂)!! 一.HTTP请求报文 1.请求行 2.请求头部 3.空行 4.请求数据 二.HTTP请求的方法 一.HTTP请求报文 一个HTTP请求报文由四个部分组成 ...
- 关于HTTP的8种请求方法
关于HTTP请求方法中的8种请求方法(简单介绍) HTTP是超文本传输协议,其定义了客户端与服务器端之间文本传输的规范.HTTP默认使用80端口,这个端口指的是服务端的端口,而客户端使用的端口是动态分 ...
- HTTP请求方式中8种请求方法(简单介绍)
HTTP请求方式中8种请求方法(简单介绍) 简单介绍 HTTP是超文本传输协议,其定义了客户端与服务器端之间文本传输的规范.HTTP默认使用80端口,这个端口指的是服务端的端口,而客户端使用的端口是动 ...
- 请求方法 GET 和 POST 的区别
1.HTTP请求方法都有哪些 HTTP/1.1协议中共有八种方法,也可以叫做"动作",来表明Request-URL对指定资源的不同操作方式 在HTTP1.0中,有三种方法:GET, ...
- Http请求方法的区别
HttpRequest Method 一.HttpRequest 请求方法 二.POST和PUT请求的区别 1.POST请求非幂等性操作 2.根据幂等性区分POST与PUT的使用 三.GET和POST ...
- http的请求方法 GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE 说明
2019独角兽企业重金招聘Python工程师标准>>> 超文本传输协议(HTTP, HyperText Transfer Protocol)是一种无状态的协议,它位于OSI七层模型的 ...
- postman delete 请求传递数组_Postman请求方法
有头发且有趣的码农万里挑一~ 43 有料叔 | 一位有故事的程序猿 常见的请求方法GET:获取资源 POST:创建资源 UP:修改或更新一个请求/资源 PATCH:修改或更新一个请求/资源 DELET ...
最新文章
- BZOJ 1070 拆点 费用流
- 全网爆红!全新洗脑神曲:程序员Disco
- CCF CSP 201403-1 相反数(C++)
- C字节对齐与C++类对象内存布局
- alc236黑苹果驱动_台式机黑苹果独显驱动
- JAVA中的内部类(二)成员内部类
- 【专题报道】Google I/O开发者大会
- qiniu rs.php,七牛API操作类 - suconghou的个人空间 - OSCHINA - 中文开源技术交流社区...
- 相机靶面大小和显微镜FN的匹配关系
- Error opening Velodyne socket dump file 的一种可能解决方法
- 解决npm install 报错,亲测有效
- php计算器源码,php 简单计算器
- 查理芒格思维模型 —— 费马帕斯卡系统
- 第一批冯·诺依曼计算机
- SonarQube8.6 使用说明
- 如何用代码实现抖音的图片旋转
- 用Pandas揭秘美国选民的总统喜好
- 矩阵论 内积空间几何表示图解
- 将火狐浏览器鼠标滚轮滚动速度调到接近edge浏览器的效果
- Cookie跨域以及Cookie共享问题
热门文章
- 学习 Go 语言 0x04:《Go 语言之旅》中切片的练习题代码
- 云计算机是什么原理,云电脑的运行原理是什么?
- KEIL,#ifdef宏定义下失效代码差异性显示
- Synology群晖 DS920 +,DS420 +,DS720 +,DS220 + NAS横向对比 群晖20plus系列怎么选
- 判断IE浏览器的文档模式以及浏览器模式
- c# Dispose实现 MSDN官方教程
- 2018年总结与2019的计划
- 深挖用户需求,教你4招搞定精准营销
- 【Solidswork】Solidswork如何画真实螺纹
- Portraiture2023最新版本下载及PS磨皮的方法教程