最近項目的技術Leader對原本的系統的架構做了新優化,增加網關層:用來接收客戶端請求、對請求合法性校驗以及鑑權、對請求根據URI路由轉發到相應的業務邏輯層;實際上,添加portal模塊,避免接口無校驗直接暴露;
情景
下圖所示的這個查詢接口 原本是可以直接請求,沒有鑑權的;整改後,直接請求都是401【上鎖的圖標】,返回值爲 {“status”:“0”,“msg”:“The user is unauthorized”},而拿有權限的賬號登錄後,可以正常請求到,返回值是 {“status”:“1”,“msg”:“OPERATION SUCCEED”,“data”:{各種數據}}
看下我們系統【Web】的前端登錄界面:
再看下實際用到的接口:
代碼
這一部分代碼是有3個請求;先請求url_key,拿到一個key;再把這個當成參數值傳到圖片驗證碼的請求url_image,獲取驗證碼;最後請求登錄接口url_login,正常傳參後,成功登錄;
【從Requests中獲取session】
cls.s = requests.session()
res_1 = cls.s.get(url=cls.url_key)
key = res_1.json()['data']
Log.info('拿到key')
res_2 = cls.s.get(url=cls.url_image, params={'key': key})
Log.info('訪問到image')
res_3 = cls.s.get(url=cls.url_login, params={'code': input('輸入驗證碼:'), 'key': key, 'password': 'zyooooxie', 'phone': 'zyooooxie'})
Log.info('驗證碼輸入')
assert res_3.json()['msg'] == 'success'
Log.critical('系統登錄成功')
【使用seesion去請求,保證了請求是同一個session】這一部分寫的是某頁面的接口
def statements_value(self, start_date, end_date, transaction_type, bank_name):
"""
傳入時間段、賬號,返回數據總數量totalRecord
:param start_date: 開始日期
:param bank_name: 銀行名
:param end_date: 結束日期
:param transaction_type: 賬號
:return:數據明細totalRecord
"""
test_dict = {'endDate': end_date, 'startDate': start_date, 'pageId': 1, 'pageSize': 200,
'transactionType': transaction_type, 'bankName': bank_name}
res = self.s.request('post', self.url_statements, json=test_dict)
statements_record = res.json()['data']['totalRecord']
return statements_record
這一部分是退出系統的接口;
@classmethod
def tearDownClass(cls):
r = cls.s.post(url=cls.url_logout)
assert r.json()['msg'] == 'success'
print('本py文件 測試結束')
Log.critical('系統退出')
交流技術 歡迎+QQ 153132336 zy
個人博客 https://blog.csdn.net/zyooooxie