最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python接口自動(dòng)化之淺析requests模塊post請(qǐng)求

 更新時(shí)間:2021年08月24日 17:09:57   作者:軟件測(cè)試自動(dòng)化測(cè)試  
這篇文章Python接口自動(dòng)化之淺析requests模塊post請(qǐng)求,以下主要介紹requests模塊中的post請(qǐng)求的使用,post源碼,data、json參數(shù)應(yīng)用場(chǎng)景及實(shí)戰(zhàn)

在上一篇Python接口自動(dòng)化測(cè)試系列文章:Python接口自動(dòng)化之淺析requests模塊get請(qǐng)求,介紹了requests模塊、get請(qǐng)求及響應(yīng)結(jié)果詳解。接下來介紹requests模塊中的post請(qǐng)求的使用。

一、源碼解析

def post(url, data=None, json=None, **kwargs):
    r"""Sends a POST request.
    :param url: URL for the new :class:`Request` object.
    :param data: (optional) Dictionary, list of tuples, bytes, or file-like
        object to send in the body of the :class:`Request`.
    :param json: (optional) json data to send in the body of the :class:`Request`.
    :param \*\*kwargs: Optional arguments that ``request`` takes.
    :return: :class:`Response <Response>` object
    :rtype: requests.Response
    """
 
    return request('post', url, data=data, json=json, **kwargs)

post請(qǐng)求參數(shù)解析:

url: 請(qǐng)求的url,必填;

data: 選填,請(qǐng)求參數(shù);

json: 選填,請(qǐng)求參數(shù);

kwargs:選填,可以傳入headers、cookies等。

二、data、json區(qū)別

小伙伴們看完可能有點(diǎn)懵逼,data和json有啥區(qū)別呀,什么時(shí)候傳入data,什么時(shí)候傳入json。

舉個(gè)栗子:

data = {
    "name":"vivi"
}
print(type(data))

聰明的小伙伴立即搶答了,打印的是字典類型。

那如果想把字典轉(zhuǎn)換為json字符串呢,需要引用json模塊。

import json
data = {
    "name":"vivi"
}
data = json.dumps(data)
print(type(data))

敲黑板:

  • 不管json是str還是dict,如果不指定headers中的content-type,默認(rèn)為application/json;
  • data為dict時(shí),如果不指定content-type,默認(rèn)為application/x-www-form-urlencoded,相當(dāng)于普通form表單提交的形式;
  • data為str時(shí),如果不指定content-type,默認(rèn)為application/json。

重點(diǎn)來了,post請(qǐng)求參數(shù)到底是傳data還是json,這時(shí)候我們要看請(qǐng)求頭里的content-type類型(具體參照接口文檔,沒有接口文檔的抓包)。

如果請(qǐng)求頭中content-type為application/json, 為json形式,post請(qǐng)求使用json參數(shù)。

 

如果請(qǐng)求頭中content-type為application/x-www-form-urlencoded,為表單形式,post請(qǐng)求時(shí)使用使用data參數(shù)。

三、form形式發(fā)送post請(qǐng)求

當(dāng)前接口的請(qǐng)求類型為application/x-www-form-urlencoded。

# 導(dǎo)入requests模塊
import requests
# 請(qǐng)求url
url = "http://127.0.0.1:8000/user/login"
# 請(qǐng)求參數(shù)
payload = {
    "mobilephone":"1530272****",
    "pwd":"123456"
}
# form表單形式,參數(shù)用data
res = requests.post(url, data=payload)
print(res.text)

響應(yīng)結(jié)果為:

{
    "status": 1,
    "code": "10001",
    "data": null,
    "msg": "登錄成功"
}

四、json形式發(fā)送post請(qǐng)求

當(dāng)前接口的請(qǐng)求類型為application/json。

# 導(dǎo)入requests模塊
import requests
# 請(qǐng)求的url地址
url = 'http://127.0.0.1:8000/user/login/'
# 請(qǐng)求頭
headers = {"content-type":"application/json"}
# payload 為傳入的參數(shù)
payload = {"username":"vivi","password":"123456","remember_me":"false"}
# json形式,參數(shù)用json
res = requests.post(url,json=payload,headers=headers)
print(res.text)

響應(yīng)結(jié)果為:

無響應(yīng)???

問題來了,如果請(qǐng)求類型為application/json,我偏要傳入data參數(shù)呢?

先按我們正常思維走一波:

import requests
payload = {"username":"vivi","password":"123456","remember_me":"false"}
header = {"content-type":"application/json"}
url = 'http://127.0.0.1:8000/user/login/'
res = requests.post(url,data=payload,headers=header)
print(res.text)

響應(yīng)結(jié)果:請(qǐng)求錯(cuò)誤

{"code":400,"data":[],"message":"Input error"}

請(qǐng)求類型為application/json,如果想用data傳參,需要將字典類型數(shù)據(jù)轉(zhuǎn)換為json字符串

import requests
import json
payload = {"username":"vivi","password":"123456","remember_me":"false"}
header = {"content-type":"application/json"}
# 字典轉(zhuǎn)換為json串
data = json.dumps(payload)
url = 'http://127.0.0.1:8000/user/login/'
res = requests.post(url,data=data,headers=header)
print(res.text)

本文主要講解post源碼,data、json參數(shù)應(yīng)用場(chǎng)景及實(shí)戰(zhàn)。接口使用的本地服務(wù),如果大家想練手,可以使用公司項(xiàng)目或網(wǎng)上項(xiàng)目自行實(shí)戰(zhàn)。

本文主要講解post源碼,data、json參數(shù)應(yīng)用場(chǎng)景及實(shí)戰(zhàn)。接口使用的本地服務(wù),如果大家想練手,可以使用公司項(xiàng)目或網(wǎng)上項(xiàng)目自行實(shí)戰(zhàn),希望大家以后多多支持腳本之家!

相關(guān)文章

  • 用Python實(shí)現(xiàn)斐波那契(Fibonacci)函數(shù)

    用Python實(shí)現(xiàn)斐波那契(Fibonacci)函數(shù)

    這篇文章主要介紹了用Python實(shí)現(xiàn)斐波那契(Fibonacci)函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • Python調(diào)用Pandas實(shí)現(xiàn)Excel讀取

    Python調(diào)用Pandas實(shí)現(xiàn)Excel讀取

    這篇文章主要為大家介紹了在Python中如何調(diào)用Pandas實(shí)現(xiàn)Excel文件的讀取,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-04-04
  • Python獲取DLL和EXE文件版本號(hào)的方法

    Python獲取DLL和EXE文件版本號(hào)的方法

    這篇文章主要介紹了Python獲取DLL和EXE文件版本號(hào)的方法,實(shí)例分析了Python獲取系統(tǒng)文件信息的技巧,需要的朋友可以參考下
    2015-03-03
  • python實(shí)現(xiàn)去除下載電影和電視劇文件名中的多余字符的方法

    python實(shí)現(xiàn)去除下載電影和電視劇文件名中的多余字符的方法

    這篇文章主要介紹了python實(shí)現(xiàn)去除下載電影和電視劇文件名中的多余字符的方法,可以批量修改視頻文件名稱,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-09-09
  • 使用python繪制cdf的多種實(shí)現(xiàn)方法

    使用python繪制cdf的多種實(shí)現(xiàn)方法

    今天小編就為大家分享一篇使用python繪制cdf的多種實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 在python中路徑含有空格的問題及解決

    在python中路徑含有空格的問題及解決

    這篇文章主要介紹了在python中路徑含有空格的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python OpenCV實(shí)現(xiàn)基本圖形繪制

    Python OpenCV實(shí)現(xiàn)基本圖形繪制

    這篇文章主要介紹了Python OpenCV實(shí)現(xiàn)基本圖形繪制,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • python 名稱空間與作用域詳情

    python 名稱空間與作用域詳情

    這篇文章主要介紹了python 名稱空間與作用域詳情,函數(shù)內(nèi)部的函數(shù)只能在函數(shù)內(nèi)部調(diào)用,不能在函數(shù)外部調(diào)用,通過接下來的學(xué)習(xí)你將會(huì)知道為什么會(huì)出現(xiàn)這種情況。

    2021-10-10
  • numpy中的converters和usecols用法詳解

    numpy中的converters和usecols用法詳解

    本文主要介紹了numpy中的converters和usecols用法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • python切片作為占位符使用實(shí)例講解

    python切片作為占位符使用實(shí)例講解

    在本篇內(nèi)容里小編給大家分享的是一篇關(guān)于python切片作為占位符使用實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-02-02

最新評(píng)論

泸水县| 武清区| 社旗县| 上高县| 怀宁县| 凤台县| 新河县| 东安县| 卓资县| 商洛市| 东明县| 乌兰县| 沙洋县| 辛集市| 福清市| 吴桥县| 南丹县| 花莲市| 嘉禾县| 大港区| 东丰县| 渑池县| 荥经县| 正宁县| 平湖市| 宾川县| 鱼台县| 尉犁县| 苏州市| 汝南县| 仁寿县| 万州区| 古浪县| 通化市| 普兰店市| 徐闻县| 监利县| 辰溪县| 砀山县| 宝清县| 平乡县|