python - 每次烧瓶服务器接收到发布请求时刷新名为路径的变量
问题描述
我正在运行一个烧瓶服务器,它接收 3 个 json 响应(一个是用于 id 目的的随机字符串),它使用该 id 创建一个新路径。然后服务器将所有 json 写入一个文本文件,用于在各种路径之间传递它。然后它将用户重定向到新路径(使用他们发送的 id),并返回一个布尔语句。
我的问题是我第一次发送请求(用邮递员测试),一切正常。新的 url 路径是可访问的,重定向很好,并返回正确的信息。然而,之后的每个请求都不起作用,因为虽然文本文件完美地包含了所有新信息,但分支变量(形成重定向路径)并没有不断迭代,并且服务器停留在创建的第一个路径上。如何确保每次发出新请求并重定向时路径都会更新?
json 请求:(每个请求的 id 都是随机的,而不是绑定到用户个人资料的 id。)
{
"user":"johndoe@gmail.com",
"password":"johndoe123",
"id":"crazyrandomid23031284"
}
烧瓶服务器代码:
from flask import Flask,request,redirect, url_for,abort
import json
#import random
#import string
app=Flask(__name__)
@app.route('/home',methods=['GET'])
def home():
return 'welcome home!'
@app.route('/req',methods=["POST"])
def index():
js=request.get_json()
fil=open("req.txt","w")
#print(type(js))
#print(js["name"])
jsd=json.dumps(js)
fil.write(jsd)
fil.close()
return redirect(url_for("id"))
fil1=open("req.txt")
data=fil1.read()
js1=json.loads(data)
idval=js1["id"]
branch="/"+idval
@app.route(branch,methods=['GET'])
def id():
nam=js1['user']
passw=js1['password']
status=True
resp={}
resp["sub"]=[]
resp["sub"].append({
"user":nam,
"password":passw,
"status":status
})
x=json.dumps(resp)
return x
if __name__== '__main__':
app.run(port=5000)
我假设有问题的代码是:
fil1=open("req.txt")
data=fil1.read()
js1=json.loads(data)
idval=js1["id"]
branch="/"+idvalenter code here
因为它只在程序开始时运行一次,并且没有嵌套在任何类型的循环中,所以当另一个请求以不同的 ID 进入时永远不会刷新,并且永远不会更改为新请求提供服务的路径。我不知道哪种类型的循环在这里效果最好。任何建议表示赞赏。
解决方案
推荐阅读
- android - MpAndroidChart 圆角饼图
- elasticsearch - 如何在过滤器聚合中做 AND / OR
- asp.net-core - .NET Core Razor Pages 应用程序的身份验证不适用于在使用 .AddIdentityServerJwt() 时没有“/Identity”路由的视图
- swiftui - 在 UserDefaults 中存储字典
- javascript - 在每次点击时创建一个新的过渡实例(反应过渡组)
- r - 如何创建一个根据条件延迟嵌套循环或不延迟的函数
- nock - Nock“与请求不匹配”与正则表达式
- c++ - 与静态成员相关的模板专业化错误
- python - 使用 Python,有没有更优雅的方法来查找列表中的第二大数字?
- javascript - javascript中未定义的数组变量