首页 > 解决方案 > Flask API 返回错误的 JSON 或空白列表

问题描述

我正在使用的 Flask 应用程序出现问题,每当我POST从 Postman 发送请求时,我都会收到一个空白列表。

这是我正在使用的代码:

1  @app.route('/twist', methods=['POST'])
2  def twist():
3       try:
4          session = Session(request.json.get('url'), nameserver=NAMESERVER)
5          session.scan()
6          sessions.append(session)
7          sessionUrl = session.status()
8          urlId = sessionUrl['id']
9          for s in sessions:
10              if s.id == urlId:
11                  return jsonify(s.domains()), 201
12              else:
13                  return return jsonify({'message': 'Scan session not found'}), 404
14      except Exception as err:
15         return jsonify({'message': 'Invalid domain name'}), 400

如果我去掉第 10 行,我在第一次尝试时确实得到了有效的响应,但如果我用其他 URL 发送第二个请求,我会继续得到与第一个请求相同的 JSON。

我使用作为我的基本代码,并且我没有使用原始 API,因为我需要它来处理一个请求。

编辑:如果我像这样将函数分成两部分:

@app.route('/twist', methods=['POST'])
def twist():
    try:
        session = Session(request.json.get('url'), nameserver=NAMESERVER)
        session.scan()
        sessions.append(session)
        sessionUrl = session.status()
        urlId = sessionUrl['id']
        return jsonify(urlId), 201
    except Exception as err:
        return jsonify({'message': 'Invalid domain name'}), 400

@app.route('/twist/<sid>/domains')
def api_domains(sid):
    for s in sessions:
        if s.id == sid:
            return jsonify(s.domains())
    return jsonify({'message': 'Scan session not found'}), 404

我使用 发出两个单独的请求,urlId因为sid它就像一个魅力。

标签: pythonflask

解决方案


推荐阅读