🎯 [Bài viết kỹ thuật – dành cho cộng đồng DevNet/Automation VnPro]
🔧 Python Requests: Giao tiếp HTTP "cho con người" – tự động hóa thiết bị mạng chưa bao giờ đơn giản đến thế!
Bạn từng gặp khó khăn khi làm việc với REST API? Cảm thấy các thư viện HTTP trong Python như urllib, httplib quá cồng kềnh, nhiều dòng code rối rắm? Vậy thì xin chào mừng bạn đến với Python Requests – đúng như slogan của nó: HTTP for Humans.
Trong bài này, chúng ta sẽ cùng nhau “đập hộp” Requests và áp dụng nó để tương tác với Cisco Cloud Services Router 1000v (CSR1000v) thông qua RESTCONF API. Nếu bạn đang theo đuổi DevNet Associate, CCNP DEVCOR hoặc đơn giản là dân tự động hóa mạng – đây chính là công cụ không thể thiếu!
🧰 Bắt đầu với Requests: Cài đặt và Khởi động
Requests không có sẵn trong thư viện chuẩn của Python, bạn cần cài đặt:
pip install requests
Và như truyền thuyết Python kể lại, kho PyPi được dân chơi gọi vui là “The Cheese Shop” – lấy cảm hứng từ một tiểu phẩm của Monty Python 😄
🧪 Demo: Gửi HTTP GET đến thiết bị mạng Cisco CSR1000v
import requests from requests.auth import HTTPBasicAuth import json # Tắt cảnh báo SSL trong môi trường lab requests.packages.urllib3.disable_warnings() url = 'https://csr1v1/restconf/data/Cisco-IOS-XE-native:native' auth = HTTPBasicAuth('cisco', 'cisco') headers = { 'Accept': 'application/yang-data+json', 'Content-Type': 'application/yang-data+json' } response = requests.get(url, headers=headers, auth=auth, verify=False)
➡️ Các thành phần quan trọng:
🔍 Kiểm tra kết quả phản hồi
print(response.status_code) # 200 nếu thành công print(response.ok) # True nếu status_code == 200 print(response.reason) # “OK” hoặc lý do lỗi print(response.headers) # Các headers phản hồi print(response.text) # Nội dung JSON gốc (dạng chuỗi) print(response.json()) # Nội dung JSON dạng dict Python
🔥 Tip: response.json() giúp chuyển JSON thành dict → cực kỳ dễ thao tác!
📤 Gửi dữ liệu (POST) đến thiết bị
payload = { "Cisco-IOS-XE-native:hostname": "vnpro-router" } response = requests.post( url, data=json.dumps(payload), headers=headers, auth=auth, verify=False )
Bạn có thể tùy ý thay post bằng put, delete, patch tùy mục đích cập nhật cấu hình.
🎓 Các Object thường dùng trong response
Khi bạn gõ dir(response) sẽ thấy hàng loạt thuộc tính. Sau đây là những thứ “xài hoài không chán”:
✅ Quiz Mini – ôn lại cho chắc:
👉 Câu 1: Hai cách nào dùng để truy cập dữ liệu JSON từ API response?
✔️ response.json()
✔️ json.loads(response.text)
📚 Kết luận
Python Requests là một vũ khí cực kỳ lợi hại cho dân DevOps, NetDevOps, hoặc bất kỳ ai muốn tương tác với thiết bị mạng qua API.
Bạn chỉ cần vài dòng code – là đã có thể GET, POST, PATCH cấu hình trên router Cisco, switch Juniper, firewall Palo Alto hoặc thậm chí API cloud như Meraki, ACI, DNA Center.
💬 Bạn đã dùng Requests để tương tác với thiết bị nào? Để lại bình luận chia sẻ nhé!
📌 Nếu cần bài lab mẫu hoặc tài liệu RESTCONF + YANG + NETCONF, team VnPro luôn sẵn sàng hỗ trợ!
🔧 Python Requests: Giao tiếp HTTP "cho con người" – tự động hóa thiết bị mạng chưa bao giờ đơn giản đến thế!
Bạn từng gặp khó khăn khi làm việc với REST API? Cảm thấy các thư viện HTTP trong Python như urllib, httplib quá cồng kềnh, nhiều dòng code rối rắm? Vậy thì xin chào mừng bạn đến với Python Requests – đúng như slogan của nó: HTTP for Humans.
Trong bài này, chúng ta sẽ cùng nhau “đập hộp” Requests và áp dụng nó để tương tác với Cisco Cloud Services Router 1000v (CSR1000v) thông qua RESTCONF API. Nếu bạn đang theo đuổi DevNet Associate, CCNP DEVCOR hoặc đơn giản là dân tự động hóa mạng – đây chính là công cụ không thể thiếu!
🧰 Bắt đầu với Requests: Cài đặt và Khởi động
Requests không có sẵn trong thư viện chuẩn của Python, bạn cần cài đặt:
pip install requests
Và như truyền thuyết Python kể lại, kho PyPi được dân chơi gọi vui là “The Cheese Shop” – lấy cảm hứng từ một tiểu phẩm của Monty Python 😄
🧪 Demo: Gửi HTTP GET đến thiết bị mạng Cisco CSR1000v
import requests from requests.auth import HTTPBasicAuth import json # Tắt cảnh báo SSL trong môi trường lab requests.packages.urllib3.disable_warnings() url = 'https://csr1v1/restconf/data/Cisco-IOS-XE-native:native' auth = HTTPBasicAuth('cisco', 'cisco') headers = { 'Accept': 'application/yang-data+json', 'Content-Type': 'application/yang-data+json' } response = requests.get(url, headers=headers, auth=auth, verify=False)
➡️ Các thành phần quan trọng:
- URL: endpoint RESTCONF trên thiết bị
- auth: xác thực cơ bản (Basic Auth)
- headers: định dạng dữ liệu đầu ra mong muốn (YANG-data+json)
- verify=False: bỏ qua xác thực SSL – chỉ nên dùng trong lab/dev
🔍 Kiểm tra kết quả phản hồi
print(response.status_code) # 200 nếu thành công print(response.ok) # True nếu status_code == 200 print(response.reason) # “OK” hoặc lý do lỗi print(response.headers) # Các headers phản hồi print(response.text) # Nội dung JSON gốc (dạng chuỗi) print(response.json()) # Nội dung JSON dạng dict Python
🔥 Tip: response.json() giúp chuyển JSON thành dict → cực kỳ dễ thao tác!
📤 Gửi dữ liệu (POST) đến thiết bị
payload = { "Cisco-IOS-XE-native:hostname": "vnpro-router" } response = requests.post( url, data=json.dumps(payload), headers=headers, auth=auth, verify=False )
Bạn có thể tùy ý thay post bằng put, delete, patch tùy mục đích cập nhật cấu hình.
🎓 Các Object thường dùng trong response
Khi bạn gõ dir(response) sẽ thấy hàng loạt thuộc tính. Sau đây là những thứ “xài hoài không chán”:
- status_code: mã HTTP trả về (200, 404…)
- ok: Boolean – True nếu status_code == 200
- reason: giải thích ngắn gọn khi lỗi
- text: nội dung JSON trả về (dạng string)
- json(): nội dung JSON (dạng dict)
- raise_for_status(): raise exception nếu lỗi
✅ Quiz Mini – ôn lại cho chắc:
👉 Câu 1: Hai cách nào dùng để truy cập dữ liệu JSON từ API response?
✔️ response.json()
✔️ json.loads(response.text)
📚 Kết luận
Python Requests là một vũ khí cực kỳ lợi hại cho dân DevOps, NetDevOps, hoặc bất kỳ ai muốn tương tác với thiết bị mạng qua API.
Bạn chỉ cần vài dòng code – là đã có thể GET, POST, PATCH cấu hình trên router Cisco, switch Juniper, firewall Palo Alto hoặc thậm chí API cloud như Meraki, ACI, DNA Center.
“Tự động hóa không còn là xu hướng – nó là yêu cầu bắt buộc. Và Requests chính là bước khởi đầu đơn giản nhất.”
💬 Bạn đã dùng Requests để tương tác với thiết bị nào? Để lại bình luận chia sẻ nhé!
📌 Nếu cần bài lab mẫu hoặc tài liệu RESTCONF + YANG + NETCONF, team VnPro luôn sẵn sàng hỗ trợ!