Python- 測試API
當我們在開發Magento或是各種web程式時,常常會需要串接API,但在使用前必需要做的當然就是要先來測試我們要串接的API是不是正常啦~但測試時常常會碰到各種問題(eg. 尤其cross domain但document卻又沒清楚的說明時)實在會讓人很想要大喊:我只不過想簡單測試個API啊啊啊。
OK,這邊就讓歐斯瑞來跟大家介紹用Python來測試API範例吧,由於Pyhton也是屬於直譯動態語言,只要裝好python以及IDE就可以實作,並於IDE上直接執行就可顯示出結果,乾乾脆脆。
基於以上,無論對於測試或是學習上或是臨時要使用沒有php開發環境的電腦來測試時,都是簡單又方便呢~
不囉唆,讓我們開始吧!
Python及IDE:
{PS.若你都已Python與IDE但不清楚版本的話,請在python console中輸入:
import sys print (sys.version)
就會顯示出版本囉!
以下我們是使用Ubuntu環境來教學,而python是使用3.6,IDE是使用PyCharm(有免費版可使用)。
import library套件以及建立post function
Python擁有各式各樣的library套件,在這邊我們使用到的是requests這個library來實作POST.
在python中要引用library只要在最前面放上import就好:
import requests
我們可以直接先執行看看若沒有此library話可以參考這篇: Python-基本用法之library安裝
再來我們就直接來建立post to api的方法囉~
在python中建立function是使用def語法來建立,而post的語法基本上會需要的就是url, headers以及最重要的data這幾個參數啦。
def posttoapi(url, data, headers={'Content-type': 'application/json', 'Accept': 'text/plain'}): response = requests.post(url, data=data, headers=headers) print(response.text) print(response.status_code)
由於Python是物件導向所以我們只要import requests後於requests加上”.”能呼叫其中的方法,而POST很直覺的就是
requests.post
而以下兩個分別是取出API回傳值及http status code。
response.text response.status_code
這時基本上只要再傳入參數給 posttoapi就好囉!
建立傳入參數及執行
由於客戶使用到的有md5 timestamp等等需求,並且是使用json格式來傳送data
這邊我們多import了幾個library
import hashlib import time import json
並建立我們需要的參數
PlateformKey = "testPlate" TimeStamp = str(int(time.time())) # Account = "glenntest” data = {"AccessKey": md5(Account+TimeStamp+Plateform), "Plateform": Plateform, "TimeStamp": TimeStamp, "Account": "glenn134local" } apiurl ="http://testdomain/CheckAccount jsondata= json.dumps(data)
最後就是把參數丟入 posttoapi執行囉~
而通常python我們code裡面會使用
__name__
這一個magic method來決定function的執行與否
當你是直接執行這隻.py檔時 __name__的值會等於“__main__"
如果你是其他的python scritp import這隻.py時__name__的值會等於執行import的那一隻檔案
善用這小技巧可以很方便的決定你script中的哪一些function要在什麼情況下執行唷~
if __name__ == "__main__": print(apiurl) posttoapi(apiurl, jsondata)ps(data)
執行結果:
[{"ReturnCode":"-2","ReturnMessage":"您輸入的帳號已註冊"}] 200
PyCharm下方的Python Console就顯示出我們的結果啦~~
現在就快一起建立你自己的api testing tool吧~
我要留言