Python中如何实现可接收多种类型参数的GET请求方法
实现方案
你使用的是Flask-RESTful框架,URL查询参数(?city=xxx格式)需要通过flask.request.args对象读取,完整实现代码如下:
# 先导入request依赖 from flask import request, Flask from flask_restful import Api, Resource app = Flask(__name__) api = Api(app) # 模拟用户数据集,实际场景替换为你的数据库查询逻辑 USER_LIST = [ {"id": 1, "name": "Alice", "city": "Seattle"}, {"id": 2, "name": "Bob", "city": "Boston"}, {"id": 3, "name": "Carol", "city": "Seattle"} ] class Users(Resource): def get(self, id=None): # 路径参数id存在,返回对应id的单个用户 if id is not None: target_user = next((user for user in USER_LIST if user["id"] == id), None) return target_user if target_user else {"message": "用户不存在"}, 404 # 无id参数时读取city查询参数 city_filter = request.args.get("city") if city_filter: # 按城市筛选返回结果 return [user for user in USER_LIST if user["city"] == city_filter] # 无任何参数返回全部用户 return USER_LIST # 路由需同时注册带id和不带id的规则,适配三种请求场景 api.add_resource(Users, "/users", "/users/<int:id>") if __name__ == "__main__": app.run(debug=True)
注意事项
- 如果请求参数传值带引号(比如
/users?city="Seattle"),需要先去除参数值两端的引号再做匹配,建议直接传/users?city=Seattle即可正常匹配 - 生产环境可将示例中的列表推导查询替换为对应数据库的筛选查询逻辑,性能更优
内容的提问来源于stack exchange,提问作者Francisco Perez
相关产品推荐
相关产品推荐

