100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > HTTP 请求方法 GET/POST/PUT/DELETE

HTTP 请求方法 GET/POST/PUT/DELETE

时间:2024-04-11 13:01:03

相关推荐

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传输的数据进行加密。

它是防止数据经过代理服务器时候,防止代理服务器去劫持数据,起到防止中间人攻击的一种策略。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。