【问题标题】:python REST server PUT does not update valuepython REST服务器PUT不更新值
【发布时间】:2018-11-21 19:19:05
【问题描述】:

我正在运行 python REST 服务器,我正在尝试通过 PUT 方法更新字符串,然后使用 GET 方法(不同的客户端)来检索所述更新的字符串。但问题是 GET 方法获取旧字符串(在本例中为“0”)。哪一种方法可能是错误的?

from flask import Flask, request, jsonify
import requests. jsonify

badpackets = "0"

@app.route('/badpkts/<string:badpackets>', methods=['PUT'])
def post_bad_packets(badpackets):
    badpackets = request.jsonify
    return jsonify(badpackets)
@app.route('/badpkts/', methods=['GET'])
def get_bad_packets():
    return jsonify(badpackets)

【问题讨论】:

  • def get_bad_packets: 是语法错误。这不可能是您的真实代码。请发布您的真实代码。
  • 抱歉,它缺少 (),因为我从不同的计算机编写了它运行的代码,所以它只是一个错字。编辑它是正确的。

标签: python rest get put


【解决方案1】:

get_bad_packets() 函数只知道名为badpackets全局 变量。 post_bad_packets()函数内部的同名变量是local变量。

如果要更改函数内的全局变量的值,请使用 global 关键字。我还建议使用与post_bad_packets() 不同的参数名称。

【讨论】:

  • 所以我应该使用global badpackets = request.jsonify ?
  • 不,这不是正确的语法。查看有关全局变量的 python 教程。另外,正如我所说,您需要更改 badpackets 参数的名称,因为它会隐藏同名的全局变量。
  • 但是现在还需要那个参数吗?我想我需要将坏包传递给函数来改变它。但是如果我分配新的全局参数,那么就不需要它了吗?
  • 另外,不应该是request.json,而不是request.jsonify吗?不从内存中输入代码是有充分理由的。这些愚蠢的错误使人们更难提供帮助。
  • 如果您期望坏包来自 json 数据,那么您不需要它作为参数。但是,如果您希望它来自 URL,正如您的 app.route 行所说,那么您确实需要它作为参数。那么,它是什么?
猜你喜欢
  • 1970-01-01
  • 2011-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 2013-03-26
  • 1970-01-01
相关资源
最近更新 更多