首页 > 解决方案 > 每次烧瓶服务器接收到发布请求时刷新名为路径的变量

问题描述

我正在运行一个烧瓶服务器,它接收 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 进入时永远不会刷新,并且永远不会更改为新请求提供服务的路径。我不知道哪种类型的循环在这里效果最好。任何建议表示赞赏。

标签: pythonrestflask

解决方案


推荐阅读