如何从外部文件访问本地Flask应用,实现按姓名查询用户数据
解决方案
1. 改造Flask服务(main.py)
先把原有的HTML文本返回改成结构化的JSON API,同时支持通过姓名参数查询用户,方便后续脚本解析数据:
from flask import Flask, request, jsonify app = Flask(__name__) # 结构化存储用户数据,便于查询 users = [ {"name": "John Doe", "date_of_birth": "3/14/1977", "occupation": "Director John Doe Healthcare"}, {"name": "Joe Doe", "date_of_birth": "2/17/1972", "occupation": "Entrepreneur"}, {"name": "Joseph Doe", "date_of_birth": "5/11/07", "occupation": "Student"}, {"name": "Jotaro Doe", "date_of_birth": "8/30/09", "occupation": "Student"} ] @app.route("/users", methods=["GET"]) def get_users(): # 获取URL中的name查询参数 target_name = request.args.get("name") if not target_name: # 未传参数时返回所有用户 return jsonify(users) # 精确匹配姓名(忽略大小写) matched_users = [user for user in users if user["name"].lower() == target_name.lower()] if matched_users: return jsonify(matched_users) else: return jsonify({"error": f"未找到名为 {target_name} 的用户"}), 404 if __name__ == '__main__': # 绑定到所有网卡,允许外部访问,端口保持5000 app.run(host='0.0.0.0', port=5000, debug=True)
2. 编写调用脚本(main_getter.py)
使用requests库发送GET请求到Flask服务,传入姓名参数获取用户信息。如果未安装requests,先执行pip install requests完成安装。
import requests def fetch_user_info(name): # 替换<my_ip>为你的实际IP,本地测试用127.0.0.1即可 api_endpoint = f"http://<my_ip>:5000/users?name={name}" try: response = requests.get(api_endpoint) response.raise_for_status() # 捕获HTTP请求错误 return response.json() except requests.exceptions.RequestException as e: return {"error": f"请求失败: {str(e)}"} # 示例调用 if __name__ == "__main__": query_name = "John Doe" user_data = fetch_user_info(query_name) print(user_data)
使用步骤
- 运行
main.py启动Flask服务,确认服务正常运行在<my_ip>:5000 - 运行
main_getter.py,修改query_name为你要查询的姓名,即可获取该用户的完整信息
内容的提问来源于stack exchange,提问作者Wishisht Bahl
相关产品推荐
相关产品推荐

