如何使用jsonapi 1.0版从Flask应用程序获取有效的json resp,“Content-type”=“application / vnd.api + json”

时间:2017-08-18 05:44:26

标签: python json flask

我未能从下面的代码获得任何响应。我尝试了不同的“内容类型”,尝试以各种不同的方式构建我的json。请帮忙。

@app.route('/api/v1/client', methods={'GET', 'POST'})
def client():
 if request=='post':
     req = request.get_data()
     data = req.json
     user_id = data["data"]["attributes"]["user_id"]
     redirect_uri = data["data"]["attributes"]["_redirect_uris"]
     default_scopes = data["data"]["attributes"]["_default_scopes"]

     item = Client(
         client_id=gen_salt(40),
         client_secret=gen_salt(55),

         _redirect_uris=' '.join(redirect_uri),
         _default_scopes=' '.join(default_scopes),
         user_id=user_id,

         allowed_grant_types=' '.join(['implicit', ]),
         allowd_response_types=' '.join(['token', ])
         )

     db.session.add(item)
     db.session.commit()

     resp = {
         "data":{
             "attributes":{
                 "client_id" : "client id",
                 "client_secret" : "client_secret"
             },
         "jsonapi":{
             "version" : "1.0"
             },
         "type":"client"
         }
     }

     resp["data"]["attributes"]["client_id"] = item.client_id
     resp["data"]["attributes"]["client_secret"]= item.client_secret
     status = 200

     return (jsonify(resp), status, {"Content-type":"application/vnd.api+json"})

请帮帮我!我必须做一些完全错误的事情。但是一个非常相似的代码正在另一个函数中工作。 我得到的错误是“ValueError:View函数没有返回响应// Werkzeug Debugger”。

1 个答案:

答案 0 :(得分:0)

首先,如果您想检查请求是否是通过POST发送的,则应使用if request.method == 'POST':代替if request == 'POST':

如果您想获取请求的JSON正文,则应使用request.get_json()

其余的工作似乎很好,但我建议您在做某事之前阅读完整的Flask文档。