【问题标题】:Flask request.get_json() raise BadRequest烧瓶 request.get_json() 引发 BadRequest
【发布时间】:2018-02-15 23:05:39
【问题描述】:

我有一个带有此端点的 Flask API:

@app.route('/classify/', methods=['POST'])
def classify():
    data = request.get_json()

当我使用 python 发布请求时,一切都很好。

但是当我使用 Postman 时,我得到:

<class 'werkzeug.exceptions.BadRequest'> : 400: Bad Request

我用两者发送相同的 Json(我复制/粘贴它以确保)。我相当有信心这个问题是由我的 json 中的一些“\t”引起的,它们被 python 转义但不是 Postman。

有没有办法在应用程序中检索原始 json 并对其进行处理(转义需要转义的内容)?还是另一种获取 json 的方式?

编辑:这是与您建议的重复问题不同的问题,因为您建议使用 get_json,这就是我的问题。

【问题讨论】:

标签: python json flask


【解决方案1】:

好的,事实证明你可以替换:

data = request.get_json()

作者:

data = json.loads(request.data, strict=False) # strict = False allow for escaped char

requests.data包含的是字符串格式的json,所以可以对需要转义的字符进行处理。

【讨论】:

    【解决方案2】:

    如果您的数据可能为空或将引发错误请求,请使用 request.data 而不是 request.get_json()

    【讨论】:

      【解决方案3】:

      关于 ajax 和烧瓶从 python 文件模板发送数据的所有错误。

      接收所有ajax json数据。

          data = request.get_json("")
          print(data)
          return "success!"
              
          Send data in ajax json.
          
          $(document).on('click','#texthide',function(){
                  
              
                  var text = $("#textVal").val();
                  var font = $("#font_text").val();
                  var color = $("#color_text").val();
                  var start_text = $("#start_text").val();
                  var end_text = $("#end_text").val();
                  var vid_id = new_d
                  console.log(text);
              
                  $.ajax({
                      url: '/videos/test_text',
                      type: 'POST',
                      contentType: 'application/json; charset=utf-8',
                      datatype: "json",
                    
                      data: JSON.stringify(
                          
                      {  text: $("#textVal").val(),
                          font: $("#font_text").val(),
                          color:  $("#color_text").val(),
                          start_text: $("#start_text").val(),
                          end_text: $("#end_text").val(),
                          video_id: new_d
                      })
                  });
              });
      

      【讨论】:

        猜你喜欢
        • 2020-07-20
        • 2019-05-03
        • 2014-07-23
        • 2018-12-03
        • 2016-04-12
        • 2021-05-17
        • 2015-08-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多