【问题标题】:Is it OK to send the whole POST as a JSON object?可以将整个 POST 作为 JSON 对象发送吗?
【发布时间】:2016-01-08 18:02:57
【问题描述】:

我正在使用带有 python 的 GAE,并且我正在使用多种形式。通常,我的代码如下所示:

class Handler(BaseHandler):
    #...
    def post(self):
        name = self.request.get("name")
        last_name = self.request.get("last_name")
        # More variables...
        n = self.request.get("n")
        #Do something with the variables, validations, etc.
        #Add them to a dictionary
        data = dict(name=name, last_name=last_name, n=n)
        info = testdb.Test(**data)
        info.put()

我最近注意到当表单中有很多输入(变量)时它会变得太长,所以我想也许我可以发送一个字符串化的 JSON 对象(可以使用 json.loads 将其视为 python 字典)。现在它看起来像这样:

class Handler(BaseHandler):
    #...
    def post(self):
        data = validate_dict(json.loads(self.request.body))
        #Use a variable like this: data['last_name']
        test = testdb.Test(**data)
        test.put()

这要短得多。我倾向于以这种方式做事(并停止使用 self.request.get("something")),但我担心除了客户端需要 javascript 才能正常工作之外,我可能会错过这样做的一些缺点。这样做可以吗?或者在重新排列我的代码之前我应该​​考虑什么?

【问题讨论】:

    标签: python json google-app-engine post


    【解决方案1】:

    您的以 JSON 为中心的简短代码变体绝对没有任何问题(如今很少有网络应用会费心支持没有 Javascript 的客户端:-)。

    当然,您只需要调整准备 POST 的客户端代码,从传统的 HTML 表单转变为更丰富的 JS 方法。但是,我很确定你知道这一点——只是拼写出来!-)

    顺便说一句,这里没有 App Engine 特有的内容:无论您选择如何部署服务器,都需要考虑相同的注意事项。

    【讨论】:

    • 我知道我需要一些客户端代码,但这并不难。它确实在 python 文件中保存了很多代码。非常感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 2021-01-26
    • 2013-02-09
    • 2014-02-07
    相关资源
    最近更新 更多