Flask Web服务访问带坐标参数URL时报TypeError的问题
问题原因
Flask 框架解析路由匹配到的路径参数后,会以关键字参数的形式自动传入绑定的视图函数。你的路由规则里定义了startCoord、endCoord两个路径参数,但对应的视图函数没有定义同名字段的形参,框架传参时就会抛出“收到意外关键字参数startCoord”的类型错误。
具体修复操作
- 给
getDistance视图函数补上和路由参数同名的形参列表,保证参数匹配不报错 - 修正代码里的变量名笔误:拆分终点坐标时误写的
end1Lat调整为和业务逻辑一致的endLat,避免后续拼接链接时触发变量未定义的报错 - 修正配置读取逻辑:从你打印的配置结构看,你的配置块名称为
API_KEY而非代码里写的EndPoint,读取接口密钥时要对应正确的配置路径,否则无法正常拿到密钥值 - 修正拼接接口地址的前缀错误:你原来打印的请求地址缺少
https://前缀,会导致生成的链接不符合标准URL格式
修复后的参考代码
# 配置读取路径请对齐你实际的config文件结构 @app.route("/<string:startCoord>/<string:endCoord>", methods=['GET']) def getDistance(startCoord, endCoord): startLat, startLng = startCoord.split(',') endLat, endLng = endCoord.split(',') request_url = ( "https://api.openrouteservice.org/v2/directions/driving-car" f"?api_key={config['API_KEY']['api_key']}" f"&start={startLat},{startLng}" f"&end={endLat},{endLng}" ) print(request_url)
调整完成后重启Flask服务,访问http://127.0.0.1:5000/2,3/5,6就可以正常执行视图逻辑,不会再触发参数不匹配的报错。
内容的提问来源于stack exchange,提问作者Amrmsmb
相关产品推荐
相关产品推荐

