playwright_发起接口请求_get、post、fetch应用详解
接口的请求类型有get、post、head、delete、put等多种请求类型,每种请求类型的接口在发起接口请求时是有区别的,目前系统中主要是get和post两种接口类型,本文主要介绍这两种接口发起请求时的具体应用。
前面一篇文章已经介绍了playwright发起接口请求的过程,本文将主要介绍发起接口请求时的参数如何应用。
post:
使用方法:
context =playwright.request.new_context(base_url='http://xxxxx')
context.post()
在context.post()发起post接口的请求时,主要用到url、headers、data、form、multipart、params、timeout这些参数。
url:
接口地址,如果设置了base_url,只需要传入相对地址即可。
示例:
context.post(url='/xxxxx/xxx/xx')
headers:
用于设置请求头,为字典格式。
示例:
Api_headers={
"Accept": "application/vnd.github.v3+json",
# Add GitHub personal access token.
"Authorization": f"token {API_TOKEN}",
}
Context.post(headers= Api_headers)
data、form、multipart:
这三个参数都是设置接口的入参的,只是接口的数据格式不同需要选择不同的参数。在接口的请求头中有个Content-Type字段,它的值就表示了接口的数据格式。
不同的数据格式,需要选择不同的参数。
当Content-Type的值为application/json,说明接口的数据格式为json格式,这个时候需要使用data。
示例:
data = {
"title": "Book Title",
"body": "John Doe",
}
context.post("https://xxx.com/api/xxx", data=data)
当Content-Type的值为application/x-www-form-urlencoded,说明接口的数据格式为form格式,这个时候需要使用form。
示例:
formData = {
"title": "Book Title",
"body": "John Doe",
}
context.post("https://xxx.com/api/xxx", form=formData)
当Content-Type的值为multipart/form-data,说明接口传递的数据为表单数据且有多部分构成,这个时候需要使用multipart。
示例:
Api_multipart={
"fileField": {
"name": "f.js",
"mimeType": "text/javascript",
"buffer": b"console.log(2022);",
},
}
context.post("https://xxx.com/api/xxx", multipart = Api_multipart)
params:当入参在url后面时使用,但是post接口应用较少。
timeout :设置超时时间,单位毫秒。
get:
使用方法:
context =playwright.request.new_context(base_url='http://xxxxx')
context.get()
在context.get()发起get接口的请求时,get方法和post方法的参数是一样的,但是主要用到的参数是url、headers、params这几个参数。
url:
接口地址,如果设置了base_url,只需要传入相对地址即可。
示例:
context.get(url='/xxxxx/xxx/xx')
headers:
用于设置请求头,为字典格式。
示例:
Api_headers={
"Accept": "application/vnd.github.v3+json",
# Add GitHub personal access token.
"Authorization": f"token {API_TOKEN}",
}
context.get(headers= Api_headers)
params:
用于设置接口的入参。
示例:
query_params = {
"isbn": "1234",
"page": "23"
}
context.get("https://xxx.com/api/xxx", params=query_params)
fetch:
fetch()方法相较于post和get的应用来说,fetch()方法不针对某一种接口类型,在fetch方法中有个method参数,这个参数可以指定接口类型,另外,fetch()方法中指定接口地址也不是传参给url,而是url_or_request,其他参数用法与get和post一致。
示例:
context = playwright.request.new_context(base_url= 'http://127.0.0.1:8080') #设置基本url
login_data = {
'browser':'Other',
'lang':'zh_CN',
'loginId':'sup',
'password':'s1234567'
}
response = context.fetch(url_or_request ='/oa/login.do',method='post',form=login_data)