You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python Flask中模拟Java Spring的@PathVariable实现路径变量

解决Flask-RESTful中的路径变量问题

嘿,我来帮你搞定这个路径变量的实现!你的现有代码已经搭好了基础框架,只需要做两处关键调整就能满足需求。

核心修改思路

要让/user/1这类带参数的路径生效,需要完成两个步骤:

  1. 在路由规则里定义路径变量,明确变量的类型和名称
  2. 在get方法中接收这个变量,用它去user_dict里匹配对应的数据

修改后的完整代码

from flask import Flask, jsonify, request
from flask_restful import Api, Resource

app = Flask(__name__)
api = Api(app)

# 先初始化测试数据(按照需求假设user_dict不为空)
user_dict = {
    1: {"id": 1, "username": "ShadyBears", "email": "shady@example.com"},
    2: {"id": 2, "username": "TestUser", "email": "test@example.com"}
}

class User(Resource):
    # 原代码里的__init__方法没有实际作用,可以按需保留或删除
    def get(self, user_id):
        # 直接用路径传递的user_id取值并返回JSON格式响应
        return jsonify(user_dict[user_id])

# 关键:在路由中添加<int:user_id>定义路径变量,指定类型为整数
api.add_resource(User, "/user/<int:user_id>")

if __name__ == "__main__":
    app.run(debug=True)

关键细节说明

  • 路径变量规则:"/user/<int:user_id>"里的<int:user_id>是Flask的路由语法,int是类型转换器,确保传入的参数是整数(避免非数字请求);user_id是变量名,必须和get方法的参数名完全一致。
  • 参数自动传递:当你访问/user/1时,Flask会自动把路径中的1赋值给get方法的user_id参数,不用手动解析请求。
  • 响应格式:jsonify会把字典转换成标准的JSON响应,符合RESTful API的返回规范。

测试方法

启动服务后,用浏览器或curl工具访问http://localhost:5000/user/1,就能直接拿到user_dict中id为1的用户数据啦!

内容的提问来源于stack exchange,提问作者ShadyBears

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:26:12