Bước 1: Cài đặt thư viện requests, tabulate
- Bấm tổ hợp phím Win+R để chạy cmd
- Trong màn hình cmd gõ:
+python –m pip install requests --user
+python –m pip install tabulate –user
Bước 2: Tạo một file python chứa thông tin api_key
base_url = "https://api.meraki.com/api/v0" api_key = "e24759c28edd1d97715a6ba9ea8bc679c5d2706b" |
Lưu file này tên meraki_info.py hoặc tên khác tùy ý.
Bước 3: Tạo file pgpd.py
Trong file pgpd.py ta sẽ chỉnh sửa lại phần headers là dictionary chứa X-Cisco-Meraki-API-Key và import file meraki_info.py
import requests import json import sys
import meraki_info
def get(base_url=meraki_info.base_url,api='',params=''): headers = {"X-Cisco-Meraki-API-Key": meraki_info.api_key} url = base_url + api print("\nExecuting GET '%s'\n"%url) try: resp = requests.get(url,headers=headers,params=params) print("GET '%s' status" %api,resp.status_code,'\n') return(resp) except: print("Something wrong",api) sys.exit()
def post(base_url=meraki_info.base_url, api='', params=''): headers = {"content-type" : "application/json","X-Cisco-Meraki-API-Key": meraki_info.api_key} url = base_url + api print ("\nExecuting POST '%s'\n"%url) try: resp= requests.post(url,json.dumps(params),headers=headers) print ("POST '%s' Status: "%api,resp.status_code,'\n') return(resp) except: print ("Something wrong with POST /",api) sys.exit()
def put(base_url=meraki_info.base_url,api='',params=''): headers = {"X-Cisco-Meraki-API-Key": meraki_info.api_key} url = base_url + api print("\nExecuting PUT '%s'\n"%url) try: resp = requests.put(url,headers=headers,params=params,verify=False) print("PUT '%s' status" %api,resp.status_code,'\n') return(resp) except: print("Something wrong",api) sys.exit()
def delete(base_url=meraki_info.base_url,api='',params=''): headers = {"content-type" : "application/json","X-Cisco-Meraki-API-Key": meraki_info.api_key} url = base_url + api print ("\nExecuting DELETE '%s'\n"%url) try: resp= requests.delete(url,headers=headers,params=params,verify = False) print ("DELETE '%s' Status: "%api,resp.status_code,'\n') return(resp) except: print ("Something wrong with DELETE /",api) sys.exit()
|
Bước 4: Viết code thực hiện các yêu cầu
import sys import requests import json from tabulate import tabulate
import pgpd |
Vào trang API Document của Meraki như hình dưới để xem url
Trong file pgpd phương thức get đã có base_url là https://api.meraki.com/api/v0 nên chúng ta chỉ cần thêm phần đuôi url bằng cách để vào biến api sẽ được nối với base_url thành url hoàn chỉnh để gửi đi. Do lấy thông tin về nên phương thức của request này là get. Để dữ liệu đầu ra dễ đọc hơn thì chúng ta sẽ dùng json.dumps với 2 tham số là resp.json (lấy dữ liệu ở resp dưới dạng json) và indent dùng để thụt lề.
def get_organizations_list(): resp = pgpd.get(api="/organizations") orgs_list = json.dumps(resp.json(), indent=4) return orgs_list |
Kết quả:
Như hình trên ta thấy được parameters cần là name, tiếp theo chúng ta sẽ cho người dùng nhập giá trị của name, tức là tên của organization cần tạo. Tạo một dictionary tên params có key là “name” và value tương ứng là name (name ở đây là biến có giá trị mà chúng ta vừa cho người dùng nhập từ bàn phím). Ở request này chúng ta sử dụng phương thức post để tạo tài nguyên. Lưu ý là dict params khi đưa vào phương thức post sẽ được chuyển sang dạng json.
def creat_organizations(): name = input("Nhap ten organization can tao: ") params = { "name": name } resp = pgpd.post(api="/organizations", params=params) response_json = json.dumps(resp.json(), indent=4) return response_json |
Kết quả:
- Viết hàm lấy organization id tương ứng với organization name người dùng nhập:
Để có thể tương tác với Organization tương ứng thì cần phải có organization id, vì vậy từ danh sách các organization, ta cho người dùng nhập tên của organization để truy xuất ra organization id tương ứng.
def get_organization_id(): org_str = get_organizations_list() org_list = json.loads(org_str) name = str(input("Nhap ten cua organization can chon: ")) #name = "Public API Lab" for org in org_list: if org["name"] == name: org_id = org["id"] return org_id |
Kết quả:
--- Còn tiếp ---