首页 > 编程语言 >Python处理Request请求

Python处理Request请求

时间:2023-10-16 14:55:22浏览次数:43  
标签:请求 get Python Request url https com headers

一、HTTP知识:

request请求方式有GET/POST/PUT/PATCH/DELETE/COPY/HEAD/OPTIONS/LINK/VIEW等

常用的request请求有:get和post 两种形式。

1.GET
用于获取资源,当采用 GET 方式请求指定资源时, 被访问的资源经服务器解析后立即返回响应内容。通常以 GET 方式请求特定资源时, 请求中不应该包含请求体,所有需要向被请求资源传递的数据都应该通过 URL 向服务器传递。

2. POST
POST 动作:用于提交数据, 当采用 POST 方式向指定位置提交数据时,数据被包含在请求体中,服务器接收到这些数据后可能会建立新的资源、也可能会更新已有的资源。同时 POST 方式的请求体可以包含非常多的数据,而且格式不限。因此 POST 方式用途较为广泛,几乎所有的提交操作都可以使用 POST 方式来完成。

 3.  get方式和post方式区别:

简单来说,区别是:
– GET产生 一个 TCP数据包
– POST产生 两个 TCP数据包
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

 二、HTTP常见的请求参数

url:请求url地址
headers:请求头
data:发送编码为表单形式的数据
params:查询字符串
host:请求web服务器的域名地址
User-Agent:HTTP客户端运行的浏览器类型的详细信息。通过该头部信息,web服务器可以判断到当前HTTP请求的客户端浏览器类别。
Accept:指定客户端能够接收的内容类型,内容类型中的先后次序表示客户端接收的先后次序。
Accept-Encoding:指定客户端浏览器可以支持的web服务器返回内容压缩编码类型。
Accept-Language:指定HTTP客户端浏览器用来展示返回信息所优先选择的语言
Connection:表示是否需要持久连接。如果web服务器端看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),表示连接持久有效,是不会断开的
cookie:HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。
Refer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面

具体可以参考下图:

返回结果:

 

 三、请求示例-get请求:

1.get请求,无参数:

例如:博客园的一个url:

https://www.cnblogs.com/imyalost/ajax/news

访问时,仅需要一个url就行:就可以用:

import requests,json
res = requests.get(url='https://www.cnblogs.com/imyalost/ajax/news')

print(res.text)

2.get请求,带有参数:

例如一个系统的接口:完整的url是“https://pfgateuat.com:1199/base/dictionaries?codes=FLOW_ROLE&appCode=nba&state=enable”

则可以拆分为:基础url:“https://pfgateuat.com:1199/base/dictionaries”,再加上请求参数:“codes=FLOW_ROLE&appCode=nba&state=enable”,此时请求需要用参数:params

使用requests实现则为:

url1 = "https://pfgateuat.com:1199/base/dictionaries"
par = {'codes':'FLOW_ROLE','appCode':'nba','state':'enable'}
res1 = requests.get(url=url1,params=par)

或者直接用完成的请求url进行访问也是可以的:

url_1= "https://pfgateuat.com:1199/base/dictionaries?codes=FLOW_ROLE&appCode=nba&state=enable"

res_1 =  requests.get(url=url_1)

 3.get请求,带有鉴权消息,用以确认用户权限。

 例如一个系统的接口,用以请求系统视图信息:"https://pfgateuat.com:1199/service-config/view/getOne/11511072"

 请求信息中,headers 带有鉴权消息auth和rtoken,则完整的请求如下:

url2 = "https://pfgateuat.com:1199/service-config/view/getOne/11511072"
headers = {
'auth': 'r_Nzk2MWVycDBreGhzZGp3Yndia21eODgwNTQxNzk5MTgxOTkxNTkzMzAyNzI3',
'rtoken': 'u_NDg2MWl1aWZha2lpcWdoN2FxbWpeODgwNTQxNzk5MTMzMTU0NTkzMzAyNzI3'
}
res2 = requests.get(url=url2,headers=headers)
print(res2.json())

四、请求示例-post请求:

 post请求也有get请求的3种方式,另外还有其他更多的方式:

1.post请求,请求体为json格式

例如:发送消息到飞书的通知接口:"https://open.feishu.cn/open-apis/bot/v2/hook/81b413"

发送消息时,bdoy中需要对应的json请求,headers中需要标明请求类型Content-Type,请求需要用参数:data

url3 = "https://open.feishu.cn/open-apis/bot/v2/hook/81b413"

data = json.dumps({"msg_type": "text","content": {"text": "测试消息,可以替换"}})
headers = {'Content-Type': 'application/json'}
res3 = requests.post(url3,data=data,headers=headers)
print(res3.json())

 2.post请求,发送body中带文件

 例如:一个上传文件的接口,需要发送文件到服务端。此时请求需要用到参数:files

upload_url = "https://pfgateuat.com:1199/data-fileservice/dp/ec/save"
headers = {'P-LangId': 'en'}
with open(file_full_path, 'rb') as doc:
    content = {'file': doc}
    result = requests.post(upload_url, headers=headers, files=content)
    print(f"the result is {result.json()}"

 

五、请求示例-使用postman:

postman调通接口后,如果不清楚如果使用代码实现,可以在此工具上找到一个code按钮,点开后会看到一个产生代码的弹框

在左边选择对应语言后,就会给出对应的代码示例,特别方便。

 

 

标签:请求,get,Python,Request,url,https,com,headers
From: https://www.cnblogs.com/jintianniu/p/17566447.html

相关文章

  • python封装https请求
    importhttp.clientimportjsonclassHTTPS_Connection:def__init__(self,res_type,body,url,api_path,headers):self.res_type=res_type#接口请求类型self.body=body#请求参数self.url=url#请求服务地址......
  • 360等Chrome浏览器查看不了网络下的请求头信息【解决办法】
    在使用360等浏览器的时候,点击网络有时候会查看不到网络信息,例如这样:解决方法点击【Filter】按钮,就是哪个小漏斗的按钮即可:打完收工! ......
  • MQTT控制报文格式 -- CONNACK (Acknowledge connection request)连接请求应答
    该报文由服务端收到CONNECT数据包后发出,客户端可以根据在合理的时间内是否收到该报文而决定是否断开网络连接。该数据包不包含Payload部分,仅有FixedHeader和VariableHeader,现对其详述如下:1.固定包头FixedHeader固定包头共2个字节byte1=0x20byte2=0x02剩余长度共有2......
  • MQTT 控制报文格式--CONNECT 连接请求
    客户端与服务器建立双向连接之后由客户端首先使用此报文与服务器建立MQTT连接,该报文定义了创建MQTT连接的二进制内容。一个网络连接种,客户端只能发送一次此报文给服务端。CONNECT报文(数据包)包含3个部分固定包头可变包头Payload1.固定包头FixedHeader固定包头由2-5个......
  • python准备工作
    准备工作导学:为什么学python?python1.简洁高效2.应用场景丰富 人生苦短,我用python Python语言基础入门什么是编程语言?用于与人类和计算机进行交流的一种语言,通过编写编程语言的代码,去指挥计算机工作。python的安装安装完验证: 我的第一个程序  Pythoncharm......
  • 树叶识别系统python+Django网页界面+TensorFlow+算法模型+数据集+图像识别分类
    一、介绍树叶识别系统。使用Python作为主要编程语言开发,通过收集常见的6中树叶('广玉兰','杜鹃','梧桐','樟叶','芭蕉','银杏')图片作为数据集,然后使用TensorFlow搭建ResNet50算法网络模型,通过对数据集进行处理后进行模型迭代训练,得到一个识别精度较高的H5模型文件。并基于Dja......
  • 如何实现Python中的切片操作
    内容来自DOChttps://q.houxu6.top/?s=如何实现Python中的切片操作Python中的切片符号是如何工作的?也就是说,当我编写代码像a[x:y:z]、a[:]、a[::2]等时,我如何理解哪些元素最终会进入切片?请在适当的地方包括参考资料。有关切片符号设计决策的更多讨论,请参见为什么切片和范围......
  • pythonDay2
    变量1.引用计数增加 2;引用计数减少代码规范快捷键:ctrl+alt+l3.变量名的命名规则  is(id)和 ==(值) 4.常量5.基本数据类型   其他 6.列表  取最后一个子列表:print(l[-1])  7.字典类型: 8.布尔Bool类型(if判断中会用到) ......
  • python字典把函数作为字典的值
    defadd(x,y):returnx+ysum=add(3,5)#print(sum)dict={"add":add}sum1=dict.get("add")(4,6)通过传参把列表list传进去,在调用的方法中添加元素,原来的列表list也就成功添加了元素defaddItem(list):print(type(list))list.append("aaas")......
  • java.lang.TypeNotPresentException: Type javax.servlet.http.HttpServletRequest no
    完整的报错信息java.lang.TypeNotPresentException:Typejavax.servlet.http.HttpServletRequestnotpresent atjava.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:117)~[na:na] atjava.base/sun.reflect.generics......