Flask根据请求显示返回数据

时间:2015-11-29 06:07:37

标签: python flask flask-restful

我有一些问题。 我是python和flask的新手。

我正在构建一个API,用于查询数据库,单独的应用程序前端和后端。但是问题已经来解决Flask的搜索结果。

示例:

以下' curl'命令用户名' miguel'注册一个新用户。和密码' python':

$ Curl -X POST -H -i "Content-Type: application / json 
'd' {"username":" miguel","password":"python"} 'http://127.0.0.1:5000/api/users

RETURN:

  

HTTP / 1.0 201 CREATED Content-Type:application / json   内容长度:27位置:http://127.0.0.1:5000/api/users/1服务器:   Werkzeug / Python 0。9。4 / 2.7。3日期:2013年11月28日星期四19:56:39 GMT {   "用户名":"米格尔" }

通过doterminal我们返回用户名,有人知道检索并在前端显示用户姓名的方法。

Resaltar它应该考虑字体结束并返回并在不同的机器上运行。

-------- UPDATE -------

BACKEND

@app.route('/api/users', methods=['POST'])
def new_user():
    username = request.json.get('username')
    password = request.json.get('password')
    if username is None or password is None:
        abort(400)    # missing arguments
    if User.query.filter_by(username=username).first() is not None:
        abort(400)    # existing user
    user = User(username=username)
    user.hash_password(password)
    db.session.add(user)
    db.session.commit()
    return (jsonify({'username': user.username}), 201,
            {'Location': url_for('get_user', id=user.id, _external=True)})

FRONTEND

@home_blueprint.route('/cadastro', methods=['POST'])
def cadastro():
    username = request.form['username']
    password = request.form['password']

    if username and password:
        url = 'http://127.0.0.1:4000/api/users'
        payload = {'username': username,'password':password}
        headers = {'content-type': 'application/json'}
        r = requests.post(url, data=json.dumps(payload), headers=headers)

    else:
        return "ERRO"
    return "Create new user sucesso!"

1 个答案:

答案 0 :(得分:0)

(将我的评论作为答案发布)

您可以使用r.textthe document获取requests.post的重新调整数据:

  

当您发出请求时,Requests会根据HTTP标头对响应的编码进行有根据的猜测。访问r.text时会使用请求猜到的文本编码。

所以只需替换

return "Create new user sucesso!"

return r.text

在这种情况下,r.textrequests.post(url, data=json.dumps(payload), headers=headers)返回数据,由以下人员创建:

return (jsonify({'username': user.username}), 201,
        {'Location': url_for('get_user', id=user.id, _external=True)})