Ví dụ sau đây cho thấy cách gọi API bằng thư viện requests
của Python, sử dụng khoá API để xác thực. Cách sử dụng:
- Cài đặt thư viện
requests
Python. Từ dòng lệnh:pip install requests
. - Lưu chương trình Python sau vào máy tính và đặt tên là
example.py
. - Lưu tệp example_request.json vào cùng thư mục với tệp (đây là yêu cầu JSON mẫu).
- Tạo tệp
credentials.json
trong cùng thư mục với chương trình của bạn, với{"key": "your_api_key"}
- Chạy ví dụ từ dòng lệnh:
python example.py
.
# example.py
import json
import requests
def run_example():
"""Calls the OR API to solve a shift scheduling problem."""
# Endpoint for the workforce scheduling solver in the OR API.
end_point = "https://optimization.googleapis.com/v1/scheduling:solveShiftScheduling"
# Read the API Key from a JSON file with the format:
# {"key": "your_api_key"}
with open("credentials.json") as f:
credentials = json.load(f)
api_key = credentials["key"]
# Load the JSON file with the request.
with open("example_request.json", "r") as f:
json_request = json.load(f)
# Call the API post method.
response = requests.post(f"{end_point}?key={api_key}", json=json_request)
# Process the response.
if response.ok:
solution = json.loads(response.content)
with open("example_response.json", "w") as f:
json.dump(solution, f, indent=2)
print(solution)
else:
error = json.loads(response.content)["error"]
print(f'Status code {error["code"]}: {error["message"]}')
if __name__ == "__main__":
run_example()
Làm cách nào để đặt thời hạn?
Thời hạn xác định khoảng thời gian tối đa mà lệnh gọi đến API cần. Người dùng có thể đặt thời hạn cho cả máy khách và máy chủ. Trong ngữ cảnh của API OR, việc thời hạn của máy chủ hữu ích hơn vì thời hạn này cho máy chủ phụ trợ biết cách thời gian để tiếp nhận yêu cầu, chạy trình giải cơ bản và trả về một của bạn. Ngược lại, thời hạn của khách hàng lại hữu ích khi đặt ra thời hạn tối đa ứng dụng khách (tức là ứng dụng gọi API OR) sẽ chuyển đến đợi phản hồi trước khi hết thời gian chờ.
Đoạn mã sau đây đặt cả thời hạn của máy khách và máy chủ trong tiêu đề phiên của yêu cầu. Thời hạn của ứng dụng được đặt thành 60 giây. Hạn chót của máy chủ phải nhỏ hơn hạn chót của ứng dụng để tính đến chi phí giao tiếp. Ở đây, chúng ta đặt thời hạn của máy chủ là 95% ứng dụng
nhưng thời hạn này có thể thay đổi tuỳ thuộc vào đơn đăng ký. Lưu ý rằng API
phím cũng được chuyển sang tiêu đề phiên để thực hiện lệnh gọi session.post(...)
rõ ràng hơn.
# Call the API post method.
session = requests.Session()
client_deadline_seconds = 60
server_deadline_seconds = 0.95 * client_deadline_seconds
session.headers = {
"Content-Type": "application/json",
"Connection": "keep-alive",
"Keep-Alive": f"timeout={client_deadline_seconds}, max=1",
"X-Server-Timeout": f"{server_deadline_seconds}",
"X-Goog-Api-Key": api_key,
}
response = session.post(end_point, json=json_request, timeout=client_deadline_seconds)