python- RESTful请求
RESTful
1. URI \ URL \ URN
定义:RESTful是基于 http 协议,定义的一种规约。
- URI 统一资源标志符
抽象的改变,用唯一的属性确认唯一的资源,那么该属性可称为 URI 。
- URL 统一资源定位符
通过某个地址,找到某个资源
- URN 统一资源名称
URI = URL + URN
常用于前后端分离项目
2. HTTP 请求时间
公共方法放在 common 路径之下;
文件命名规则:协议 + 方法
http_request.py
类命名规则:协议 + 方法,驼峰
HttpRequest
2.1 params 与 data 的区别
requests模块发送请求有data、params两种鞋带参数的方法,其中params常用在get请求中,data常用在post请求中。
2.1.1 params 以参数形式传入
传入的参数会出现在url后,以参数形式直接发起请求。
1 | params = {'name':'plumrx'} |
2.1.2 data以参数形式传入
传入参数会出现在 form 表单中。与上面相比,区别在与参数存放的位置不同。
1 | payload = {'name':'plumrx'} |
payload = {‘name’:’plumrx’}
response=requests.post(url,data=json.dumps(payload),verify=False)
print(response.text)
“json”: {
“name”: “plumrx”
},
1 |
|
payload = {‘name’:’plumrx’}
response=requests.post(url,json=payload,verify=False)
print(response.text)
“json”: {
“name”: “plumrx”
},
1 |
|
def init(self,url):
self.url=url
self.req=requests.session()
self.header={‘User-Agent’:’***’}
1 |
|
import requests
class HttpRequests(object):
# 封装自己的 get 请求,获取资源
def get(self, uri='', params='', data='', headers=None, cookie=None):
url = self.url + uri
respose = self.req.get(url, params=params, data=data, headers=headers, cookie=cookie)
return respose
1 |
|
def post(self,uri='',params='',data='',headers=None,cookies=None):
url = self.url + uri
response = self.req.post(url,params=params,data=data,headers=headers,cookies=cookies)
return response
1 |
|
def put(self,uri='',params='',data='',headers=None,cookies=None):
url=self.url+uri
response = self.req.put(url,params=params,data=data,headers=headers,cookies=cookies)
return response
1 |
|
def delete(self,rui='',params='',data='',headers=None,cookies=None):
url=self.url+uri
response = self.req.delete(url,params=params,data=data,headers=headers,cookies=cookies)
return response
1 |
|
绝对路径
form test_project.common.http_requests import HttpRequests
相对路径
from ..common.https_requests import HttpsRequests
1 |
|
url_index=’https://httpbin.testing-studio.com/'
1 |
|
http = HttpRequests(url_index)
response = http.get()
print(‘Response 内容:’ + response.text)
1 | 相当于封装postman send。 |
@classmethod
def setUpClass(cls) -> None:
cls.url = ‘***’
cls.http = HttpRequests(cls.url)
```
访问首页
def test_001_index(self):
response = TestBattal.http.get()
self.assertEqual(response.status_code,200,’请求返回非 200’)登录
def