Ví dụ sau đây minh hoạ cách gọi API bằng thư viện requests
Python, sử dụng khoá API để xác thực. Cách sử dụng:
- Cài đặt thư viện Python
requests
. Từ dòng lệnh:pip install requests
. - Lưu chương trình Python sau đây vào máy tính của bạn, đặt tên chương trình đó là
example.py
. - Lưu tệp example_request.json vào cùng thư mục với chương trình của bạn (đâ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ụ này 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:solveShiftGeneration"
# 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 thời gian thực tế tối đa mà lệnh gọi đến API cần thực hiện. Người dùng có thể đặt thời hạn cho cả ứng dụng khách và máy chủ. Trong ngữ cảnh của API OR, thời hạn của máy chủ là phương tiện hữu ích hơn, vì nó thông báo cho máy chủ phụ trợ về thời gian cần phải nhận một yêu cầu, chạy trình phân giải cơ bản và trả về một phản hồi. Ngược lại, thời hạn của ứng dụng rất hữu ích khi đặt thời gian tối đa mà ứng dụng khách (tức là ứng dụng gọi API OR) sẽ chờ phản hồi, trước khi hết thời gian chờ.
Đoạn mã sau đây đặt cả thời hạn cho ứng dụng khách và thời hạn của máy chủ trong tiêu đề phiên của yêu cầu. Thời hạn cho ứng dụng khách được đặt thành 60 giây. Thời hạn của máy chủ phải nhỏ hơn thời hạn 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% thời hạn của ứng dụng, nhưng thời hạn này có thể thay đổi tuỳ thuộc vào ứng dụng. Xin lưu ý rằng khoá API cũng đã được di chuyển sang các tiêu đề phiên để làm cho 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)