保护API免受随机调用是一个常见的需求,以下是一些常见的解决方法,并包含了代码示例。
# 服务器端代码示例
def validate_api_key(api_key):
# 验证API密钥的逻辑
if api_key == "your_api_key":
return True
else:
return False
def process_api_request(api_key, data):
if validate_api_key(api_key):
# 处理API请求的逻辑
return "API请求已成功处理"
else:
return "API密钥无效"
# 客户端代码示例
import requests
api_key = "your_api_key"
data = {"param1": "value1", "param2": "value2"}
response = requests.post("https://api.example.com/endpoint", headers={"API-Key": api_key}, data=data)
print(response.text)
# 服务器端代码示例
from flask import Flask, request, jsonify
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address
app = Flask(__name__)
limiter = Limiter(app, key_func=get_remote_address)
@app.route("/endpoint", methods=["POST"])
@limiter.limit("10/minute") # 每分钟最多10个请求
def process_api_request():
# 处理API请求的逻辑
return jsonify({"message": "API请求已成功处理"})
if __name__ == "__main__":
app.run()
# 客户端代码示例
import requests
api_key = "your_api_key"
data = {"param1": "value1", "param2": "value2"}
response = requests.post("https://api.example.com/endpoint", headers={"API-Key": api_key}, data=data)
print(response.json())
# 服务器端代码示例
from flask import Flask
app = Flask(__name__)
@app.route("/endpoint", methods=["POST"])
def process_api_request():
# 处理API请求的逻辑
return "API请求已成功处理"
if __name__ == "__main__":
app.run(ssl_context=("cert.pem", "key.pem"))
# 客户端代码示例
import requests
api_key = "your_api_key"
data = {"param1": "value1", "param2": "value2"}
response = requests.post("https://api.example.com/endpoint", headers={"API-Key": api_key}, data=data, verify="cert.pem")
print(response.text)
请记住,这些仅是一些常见的方法,实际的解决方案可能因具体情况而异。