说明:当在测试过程中,发现第三方接口在测试环境访问不上的时候,可以通过模拟接口返回测试数据,使测试能够继续进行。
from flask import Flask, request, jsonify
import json
import os
app = Flask(__name__)
# 示例数据存储(模拟数据库)
tokens = {
"f9212cf121ea2a09ec5b2d60fa5e04a3_21c133fe7d271b960d3fbe8a701fa8f3": {
"user": "admin",
"expires_in": 3600
}
}
# GET 请求示例:获取欢迎信息
@app.route('/api/welcome', methods=['GET'])
def welcome():
"""返回欢迎信息"""
response = {
"code": 200,
"message": "Welcome to Dify API Gateway",
"data": {
"version": "1.0",
"docs": "http://your-domain.com/docs"
}
}
return jsonify(response)
# GET 请求示例:生成Token(带参数验证)
@app.route('/api/gateway/generateToken', methods=['GET'])
def generate_token():
"""模拟Token生成接口"""
# 从URL参数获取用户名(模拟验证)
username = request.args.get('username', default='guest')
if username == 'unauthorized':
return jsonify({"code": 401, "message": "Unauthorized"}), 401
response = {
"code": 20000,
"message": "成功",
"data": {
"token": "f9212cf121ea2a09ec5b2d60fa5e04a3_21c133fe7d271b960d3fbe8a701fa8f3",
"expires_in": 3600
}
}
return jsonify(response)
# POST 请求示例:验证Token
@app.route('/api/gateway/verifyToken', methods=['POST'])
def verify_token():
"""模拟Token验证接口"""
# 从JSON body获取数据
data = request.get_json()
if not data or 'token' not in data:
return jsonify({"code": 400, "message": "Bad Request: token required"}), 400
# 验证Token
token = data['token']
if token in tokens:
return jsonify({
"code": 20000,
"message": "Token有效",
"data": tokens[token]
})
else:
return jsonify({"code": 403, "message": "Invalid Token"}), 403
# POST 请求示例:创建知识库(带JSON参数和错误处理)
@app.route('/api/datasets', methods=['POST'])
def create_dataset():
"""模拟创建知识库接口"""
required_fields = ['name', 'description']
data = request.get_json()
# 参数验证
if not all(field in data for field in required_fields):
return jsonify({
"code": 400,
"message": f"缺少必要字段: {required_fields}"
}), 400
# 模拟创建操作
new_dataset = {
"id": "dataset-" + os.urandom(4).hex(),
"name": data['name'],
"description": data.get('description', ''),
"created_at": "2023-10-01T00:00:00Z"
}
return jsonify({
"code": 201,
"message": "创建成功",
"data": new_dataset
}), 201 # 201 Created 状态码
if __name__ == '__main__':
app.run(port=6688, debug=True, host='0.0.0.0')