HTTP有多种请求方法,如GET、POST、PUT、DELETE、PATCH、HEAD等,不同的请求方法定义了请求如何被服务器处理。Postman支持所有的HTTP请求方法,包括一些很少使用的请求方法,如PROPFIND、UNLINK等
1、HTTP GET请求方法是从服务器检索数据,数据由统一资源标识符(URI)标示。
2、GET请求将参数拼接在URI后面并传递给服务器(参数的Key与Value之间有"="号,Value不需要引号包裹,多个参数之间用"&"符号连接)
如:
https://postman-echo.com/get?foo1=bar&foo2=bar2中,第一个参数为"foo1=bar",第二个参数为"foo2=bar2"
用Postman构建请求及收到的响应如下:在输入URL时会自动填写Params键值对
注:带Cookie的get请求
例1:带Cookie参数的headers请求
例1_1:不带Cookie参数的headers请求
1、HTTP POST请求方法是指将数据传输到服务器并引发响应,返回的数据取决于服务器的实现
2、用户可以将参数拼接在统一资源定位符(URL)后面,也可以将请求参数放在Body中
3、POST方法一般用来向服务器输入数据,它把提交的数据放置在是HTTP包的包体中
⑴请求方法选择POST
⑵在request url处输入请求url
⑶请求方法选为POST后,请求栏下的Body栏会高亮,也就是可以向request body中填充数据(添加再body种的参数并不会追加到url后面)
4、Body中有4种数据填充形式,分别为:form-data、x-www-form-urlencoded、raw、binary
注:
一般来说这种将参数附在URL之后的POST请求方法很少遇到,现在很多都是将参数放在Body中的
例2_1:以form-data形式发送参数
例2_2:以application/x-www-form-urlencoded形式发送参数
例2_3:以raw_text形式发送参数
注:以raw形式发送参数时,还可以选中参数的格式。如JSON等
例2_3_1:以raw_JSON形式发送参数
例2_4:以binary形式发送参数
注:
1、从上面几个例子中可以看出,参数在放在不同的位置处,得到的响应是不同的,所以在日常中需要确定好请求参数发送的方式(当然现在将请求参数放在URL中的发送方式很少,几乎没有,反正在正式中我还没遇到过)
2、在发送请求时,我们最好在headers部分加上服务器接收的数据类型,如:以application/x-www-form-urlencoded形式发送参数时,在headers中增加Content-Type: application/x-www-form-urlencoded键值对
3、各种形式发送参数请求的差异
body类型 | 区别 |
form-data | 就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。但Postman目前尚不支持上传多个文件 |
x-www-form-urlencoded | 就是application/x-www-from-urlencoded,会将表单内的数据转换为键值对 |
raw | 可以上传任意格式的文本,可以上传text、json、xml、html等 |
binary | 相当于Content-Type:application/octet-stream,从字面意思得知,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件 |
HTTP PUT请求方法类似于HTTP POST。同样是将数据传输到服务器(并引发响应)。返回的数据取决于服务器的实现。用Postman构建请求及收到的响应如下
例3:
HTTP PATCH请求方法用于在服务器上更新资源。一般来说,PATCH请求支持URI拼接传递参数,也支持在请求体中以form-data的形式传递参数
例4:URI拼接传递参数
例4_1:请求体传递参数
HTTP DELETE请求方法用于在服务器上删除资源。一般来说,DELETE请求支持URI拼接传递参数,也支持在请求体中以form-data的形式传递参数
例5:请求体传递参数
例5_1:URI拼接传递参数
请求头(Request Headers)是请求报文特有的,它为服务器提供了一些额外信息。例如,客户端希望接收什么类型的数据
例6:使用F12可抓取请求详情
例6_1:发送带headers的请求
例6_2:使用postman查看响应信息头
1、Authorization是验证是否拥有从服务器访问所需数据的权限。当发送请求时,通常必须包含参数,以确保请求具有访问和返回所需数据的权限。Postman提供了授权类型,可以轻松地在Postman本地应用程序中处理身份验证协议。
2、Postman不会保存授权请求头数据和请求参数,以防止公开的敏感数据暴露,如API密钥。如果想检查Postman生成的授权请求头和参数,可以单击预览请求按钮"Preview Request"
1、使用postman来构建基本认证(Basic Auth)权限认证请求,当传递正确的用户名和密码时,将返回一个"200OK"的状态码;如果不传递密码或密码错误时,将返回一个"401 Unauthorized"
2、基本身份验证是一种比较简单的授权类型,需要经过验证的用户名和密码才能访问数据资源。这就需要我们输入正确的用户名和对应的密码
1、hawk是一个HTTP认证方案,使用MAC(Message Authentication Code,消息认证码算法)算法,它提供了对请求进行部分加密验证的认证HTTP请求的方法,包括HTTP方法、请求URI和主机
2、hawk方案要求提供一个共享对称密匙在服务器与客户端之间,通常这个共享的凭证在初始TLS保护阶段建立的,或者是从客户端和服务器都可用的其他一些共享机密信息中获得的
1、在“Digest Auth”流程中,客户端向服务器发送请求,服务器返回客户端的nonce和realm值;客户端对用户名、密码、nonce值、HTTP请求方法、被请求资源URI等组合后进行MD5运算,把计算得到的摘要信息发送给服务端。服务器然后发回客户端请求的数据。
2、的好处就是不必把具备密码的信息对外传输,只需将这些密码信息加入一个对方给定的随机值计算哈希值,最后将哈希值传给对方,对方就可以认证你的身份。
3、Digest模式避免了密码在网络上明文传输,提高了安全性,但它仍然存在缺点,例如认证报文被攻击者拦截到攻击者可以获取到资源
OAuth 1.0是一个开放标准,它不需要将用户名和密码提供给第三方应用,就允许用户让第三方应用访问该用户在某一网站上储存的秘密资源
“Bearer Token”是一个安全令牌。任何用户都可以使用它来访问数据资源,而无需使用加密密钥
步骤1:踩点(目标URL、服务器接收的数据类型、提交的表单数据)
步骤2:构造请求
import requests
url = "https://accounts.douban.com/j/mobile/login/basic"
data = {"ck":"","remember":"false","name":"18380******","password":"zh18380********","ticket":""}
device_headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36 "}
response = requests.post(url=url,data=data,headers=device_headers)
result = response.json()
print(type(result))
print(result)
print(result["description"])