在openshift上将json发布到Flask时出现400错误请求

用户名

我已经阅读了所有与此相关的SO问题,但是将json发布到在RedHat的openshift云平台上运行的Flask应用中时,仍然遇到此错误(400-错误的请求)。

这是我的代码:

flaskapp.py

import os
from datetime import datetime
from flask import Flask, request, flash, url_for, redirect, \
     render_template, abort, send_from_directory

app = Flask(__name__)
app.config.from_pyfile('flaskapp.cfg')

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/<path:resource>')
def serveStaticResource(resource):
    return send_from_directory('static/', resource)

@app.route("/test")
def test():
    return "<strong>It's Alive!</strong>"

@app.route('/mine', methods=['POST'])
def mine():
    content = request.get_json(force=True)
    print content

    return "Success!\n"

if __name__ == '__main__':
    app.run(debug=True)

这就是我的app.py模样

#!/usr/bin/env python

# This file may be used instead of Apache mod_wsgi to run your python
# web application in a different framework.  A few examples are
# provided (cherrypi, gevent), but this file may be altered to run
# whatever framework is desired - or a completely customized service.
#
import imp
import os
import sys

try:
  virtenv = os.path.join(os.environ.get('OPENSHIFT_PYTHON_DIR','.'), 'virtenv')
  python_version = "python"+str(sys.version_info[0])+"."+str(sys.version_info[1]) 
  os.environ['PYTHON_EGG_CACHE'] = os.path.join(virtenv, 'lib', python_version, 'site-packages')
  virtualenv = os.path.join(virtenv, 'bin','activate_this.py')
  if(sys.version_info[0] < 3):
    execfile(virtualenv, dict(__file__=virtualenv))
  else:
    exec(open(virtualenv).read(), dict(__file__=virtualenv))

except IOError:
  pass

#
# IMPORTANT: Put any additional includes below this line.  If placed above this
# line, it's possible required libraries won't be in your searchable path
#


#
#  main():
#
if __name__ == '__main__':
  application = imp.load_source('app', 'flaskapp.py')
  port = application.app.config['PORT']
  ip = application.app.config['IP']
  app_name = application.app.config['APP_NAME']
  host_name = application.app.config['HOST_NAME']

  fwtype="wsgiref"
  for fw in ("gevent", "cherrypy", "flask"):
    try:
      imp.find_module(fw)
      fwtype = fw
    except ImportError:
      pass

  print('Starting WSGIServer type %s on %s:%d ... ' % (fwtype, ip, port))
  if fwtype == "gevent":
    from gevent.pywsgi import WSGIServer
    WSGIServer((ip, port), application.app).serve_forever()

  elif fwtype == "cherrypy":
    from cherrypy import wsgiserver
    server = wsgiserver.CherryPyWSGIServer(
      (ip, port), application.app, server_name=host_name)
    server.start()

  elif fwtype == "flask":
    from flask import Flask
    server = Flask(__name__)
    server.wsgi_app = application.app
    server.run(host=ip, port=port)

  else:
    from wsgiref.simple_server import make_server
    make_server(ip, port, application.app).serve_forever()

这是如何发布数据的:

curl -X POST -H“ application / json” -d'{“ key”:“ val”}' https://python-bonga.rhcloud.com/mine

N / B:在localhost上工作正常

用户名

我发现POST未指定Content-Type使用curl默认为发送Content-Type application/x-www-form-urlencoded

http://curl.haxx.se/docs/httpscripting.html#POST

并且如果Flask中存在(不同的)mimetype,那么json数据将变得不可用;因此request.get_json(force=True)失败。

因此,我将代码更改为先查找表单数据

if request.form:
   content = [item for item in request.form]
   print "Content:", ''.join(content)
else:
   content = request.get_json(force=True)
   print "Content:", content

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

发布Json对象时出现400(错误请求)

来自分类Dev

在单元测试中将JSON发布到Flask端点时出现错误请求

来自分类Dev

发布到Azure Blob存储时非常偶尔出现400错误的请求错误

来自分类Dev

使用Jackson JSON Mapper在JSON到POJO之间映射时出现400错误请求

来自分类Dev

将JSON发布到Controller返回400错误请求

来自分类Dev

在XmlHttpRequest中使用FormData将数据发布到asp.net核心Web API时出现“ 400错误请求”

来自分类Dev

部署到App Engine时出现400错误的请求

来自分类Dev

尝试发布大型JSON数据时出现错误的请求错误

来自分类Dev

400错误的请求-将JSON数据发布到使用Spring MVC实现的RESTful控制器时

来自分类Dev

当我尝试部署到App Engine时,发布到URL 400错误请求时出错

来自分类Dev

在Swift中向本地服务器发出发布请求时出现400错误

来自分类Dev

Flask和Ajax发布HTTP 400错误的请求错误

来自分类Dev

400发送HTTP发布请求以从身份验证代码获取令牌时出现错误请求?

来自分类Dev

通过HttpURLConnection张贴JSON数据时出现HTTP错误400错误请求

来自分类Dev

Flask出现400错误

来自分类Dev

发布JSON时出现JSON错误

来自分类Dev

将JSON传递给Spring控制器时出现400(错误请求)

来自分类Dev

读取JSON时出现400错误

来自分类Dev

查询项目列表时出现错误400错误请求

来自分类Dev

使用Pushbullet Ephemerals时出现400(错误请求)错误

来自分类Dev

在测试期间发送发布请求时出现 JSON 解码错误

来自分类Dev

JSON Ajax发布数据-获取400错误的请求消息

来自分类Dev

AFNetworking-发布json-> 400错误请求

来自分类Dev

在Openshift上将nodejs齿轮升级到v0.12后出现bcrypt错误

来自分类Dev

在 ASP.NET Core 中发布 JSON 有效负载时如何修复“错误请求 (400)”错误?

来自分类Dev

发布帖子时出现错误400 Spring Json @RequestBody

来自分类Dev

在Flask中发布json时显示“ 400 Bad Request”

来自分类Dev

部署到openshift时出现捆绑程序错误

来自分类Dev

Azure Blob 400创建容器时出现错误请求

Related 相关文章

  1. 1

    发布Json对象时出现400(错误请求)

  2. 2

    在单元测试中将JSON发布到Flask端点时出现错误请求

  3. 3

    发布到Azure Blob存储时非常偶尔出现400错误的请求错误

  4. 4

    使用Jackson JSON Mapper在JSON到POJO之间映射时出现400错误请求

  5. 5

    将JSON发布到Controller返回400错误请求

  6. 6

    在XmlHttpRequest中使用FormData将数据发布到asp.net核心Web API时出现“ 400错误请求”

  7. 7

    部署到App Engine时出现400错误的请求

  8. 8

    尝试发布大型JSON数据时出现错误的请求错误

  9. 9

    400错误的请求-将JSON数据发布到使用Spring MVC实现的RESTful控制器时

  10. 10

    当我尝试部署到App Engine时,发布到URL 400错误请求时出错

  11. 11

    在Swift中向本地服务器发出发布请求时出现400错误

  12. 12

    Flask和Ajax发布HTTP 400错误的请求错误

  13. 13

    400发送HTTP发布请求以从身份验证代码获取令牌时出现错误请求?

  14. 14

    通过HttpURLConnection张贴JSON数据时出现HTTP错误400错误请求

  15. 15

    Flask出现400错误

  16. 16

    发布JSON时出现JSON错误

  17. 17

    将JSON传递给Spring控制器时出现400(错误请求)

  18. 18

    读取JSON时出现400错误

  19. 19

    查询项目列表时出现错误400错误请求

  20. 20

    使用Pushbullet Ephemerals时出现400(错误请求)错误

  21. 21

    在测试期间发送发布请求时出现 JSON 解码错误

  22. 22

    JSON Ajax发布数据-获取400错误的请求消息

  23. 23

    AFNetworking-发布json-> 400错误请求

  24. 24

    在Openshift上将nodejs齿轮升级到v0.12后出现bcrypt错误

  25. 25

    在 ASP.NET Core 中发布 JSON 有效负载时如何修复“错误请求 (400)”错误?

  26. 26

    发布帖子时出现错误400 Spring Json @RequestBody

  27. 27

    在Flask中发布json时显示“ 400 Bad Request”

  28. 28

    部署到openshift时出现捆绑程序错误

  29. 29

    Azure Blob 400创建容器时出现错误请求

热门标签

归档